[
  {
    "path": ".gitattributes",
    "content": "# git\n.github/ export-ignore\n.gitattributes export-ignore\n.gitignore export-ignore\n\n# screenshots\npreview.* export-ignore\n\n# development\ntests/ export-ignore"
  },
  {
    "path": ".github/workflows/syntax.yaml",
    "content": "name: Syntax Tests\n# https://github.com/SublimeText/syntax-test-action\n\non:\n  push:\n    branches:\n      - master\n    paths:\n      - .github/workflows/syntax.yaml\n      - '**.sublime-syntax'\n      - '**/syntax_test_*'\n      - '**.tmPreferences'\n  pull_request:\n    paths:\n      - .github/workflows/syntax.yaml\n      - '**.sublime-syntax'\n      - '**/syntax_test_*'\n      - '**.tmPreferences'\n\njobs:\n  syntax_tests:\n    name: Syntax Tests (${{ matrix.build }})\n    runs-on: ubuntu-latest\n    timeout-minutes: 15\n    strategy:\n      matrix:\n        include:\n          - build: latest  # Latest dev build\n            packages: master\n          - build: 4180  # Oldest version we intent to support\n            packages: v4180\n    steps:\n      - uses: actions/checkout@v3\n      - uses: SublimeText/syntax-test-action@v2\n        with:\n          build: ${{ matrix.build }}\n          default_packages: ${{ matrix.packages }}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## v2.0.1 - 2025-12-07\n\n- Fix indexed symbol scope selector leaking into other languages. (@FichteFoll, #99)\n- Add support for template literal escape sequence. (@yagizmunger, #97, #98)\n\n---\n\n## v2.0.0 - 2025-05-11\n\nThe package has been adopted by the SublimeText GitHub org and now lives at\n<https://github.com/SublimeText/Terraform/> for the community to maintain.\nThis is accompanied by many changes\nto bring the syntax definition up to current standards.\n\n### Added\n\n- Declare hyphens as sub-word separators. (@FichteFoll, #60)\n- Special highlighting for `for_each` and `count` meta arguments (`keyword.control`). (@FichteFoll, #59)\n- Highlighting of more special language variables: `each`, `count` and `self`. (@FichteFoll, #58)\n- Highlighting for `ephemeral` blocks. (@TerminalFi, #70)\n- A separate syntax definition for `terraform plan` output (@michaelblyons, #51, #68)\n- Special highlighting for AWS ACL resource references in strings. (@michaelblyons, @deathaxe, #69, #76)\n- Support JSON-style objects (requires ST 4180). (@michaelblyons, #54, #71)\n- Scope-based folding rules. (@deathaxe, #81)\n- Consistent indentation rules. (@deathaxe, #82)\n- Highlight unclosed strings and stray closing brackets as illegal. (@FichteFoll, #91)\n\n### Changed\n\n- Switched to syntax version 2.\n  This breaks compatibility with ST builds before 4000,\n  but the previous version can still be installed on older builds.\n  (@FichteFoll, #62)\n- Adapted and improved many scope names to standards that have been established\n  over the past years for the default packages:\n  * String interpolation meta scopes and punctuation (@FichteFoll, #58)\n  * Keywords (@FichteFoll, @deathaxe, #58, #78, #86)\n  * Attribute access punctuation (@FichteFoll, #58)\n  * Punctuation scopes in `for` expressions (@FichteFoll, #58)\n  * Blocks, including indexing for \"name\" labels\n    (@michaelblyons, @FichteFoll, #69, #87)\n  * Operators (@michaelblyons, #66)\n  * Numbers (@deathaxe, #77)\n  * Brackets (@deathaxe, #80)\n  * Function calls (@deathaxe, #83)\n- Updated the built-in function list for highlighting. (@FichteFoll, #59)\n- Renamed many contexts and resolved various anonymous contexts\n  for better extensibility. (@deathaxe, #75, #79)\n\n### Removed\n\n- Removed various files targeting older ST versions,\n  notably the old `.tmLanguage` syntax definition.\n  This breaks compatibility with ST 2,\n  but the previous version can still be installed on older builds.\n  (@FichteFoll, #63)\n\n### Fixed\n\n- Improved matching of identifiers by adding a scope and properly recognizing hyphens. (@FichteFoll, #60)\n- Support identifiers starting with an underscore character (@FichteFoll, #43, #64).\n\n---\n\n## v1.3.1 - 2024-02-03\n\n### Added\n\n- `.nomad` files are also recognized by the Terraform syntax. (@Quenty, #55)\n\n## v1.3.0 - 2024-01-18\n\n### Changed\n\n- Separate HCL syntax into its own file and report it as `source.hcl` (rather than `source.terraform`). (@rchl, #56)\n- Update links to official docs on terraform.io. (@totoroot, #53)\n\n## v1.2.0 - 2021-06-21\n\n### Changed\n\n- Split the tfvars handling into a separate syntax file. (@rchl, #49) <br>\n  This improves interoperability with terraform-ls, e.g. via LSP.\n\n## v1.1.0 - 2021-05-17\n\n### Fixed\n\n- Removed quotes around variable types in snippets. (@notnmeyer, #42)\n\n## v1.0.0 - 2020-01-20\n\nA huge thanks to @patrickrgaffney for this amazing contribution. (#39)\n\n### Added\n\n- [Syntax tests][tests] have been added.\n- `null` constant.\n- [Exponents][exponents] in numeric literals.\n- [Character escapes][strings] for newline, carriage return, backslash, quote, and unicode points inside string literals.\n- [Trim-left and trim-right operators][string-templates] inside string templates.\n- [Directives][string-templates] inside string templates.\n- Match all valid expressions inside string templates.\n- Comparison operators `==`, `!=`, `<`, `>`, `<=`, `>=`.\n- Arithmetic operators `+`, `-`, `*`, `/`, `%`.\n- Logic operators `&&`, `||`, `!`.\n- Conditional operator `p ? e1 : e2`\n- Parenthesis matching.\n- Tuple list syntax.\n- Square-bracket [index notation][indices].\n- [Full-splat][splat] operator.\n- Comma matching inside function calls, tuples, maps, and for-expressions.\n- Attribute-access is matched on named members and the `.` dot operator.\n- [Attribute-only splat][splat] operator.\n- Allow `-` after first alpha character in identifiers.\n- Computed attribute named using parenthesis.\n- Allow function-calls outside of string interpolation.\n- Match all valid expressions inside function-call parameter lists.\n- Match functions unknown to Terraform (for other HCL uses).\n- Match [for-expressions][for-exp] inside tuples and maps.\n- Map collection syntax.\n- Match unknown block names.\n- Support for variable number of block labels.\n- Nested blocks.\n- Inline blocks.\n- Terraform [named values][named-values].\n- Update list of built-in Terraform functions.\n- Built-in block types `locals` and `terraform`.\n- Meta-scope `meta.block.terraform` added to all block bodies.\n- [Primitive type constants][types].\n- Heredocs with the leading-spaces operator `<<-`.\n- String interpolation inside heredocs.\n- [Import][import] statements.\n- JSON highlighting for `*.tfstate` files.\n\n### Changed\n\n- Rename scope `comment.line.number-sign.terraform` to `comment.line.terraform` to better reflect [scope naming standards][scopes].\n- Rename scope `constant.numeric.terraform` to `constant.numeric.[integer|float].terraform` to better reflect [scope naming standards][scopes].\n- Rename scope `entity.tag.embedded.[begin|end]` to `punctuation.section.interpolation.[begin|end]` to better reflect [scope naming standards][scopes].\n- Rename scope `variable.other.assignment.terraform` to `variable.other.readwrite.terraform` to better reflect [scope naming standards][scopes].\n    - A `meta_scope` of `variable.declaration.terraform` covers the entire attribute definition now.\n- Rename scope for `=` in assignments from `keyword.operator` to `keyword.operator.assignment` to better reflect [scope naming standards][scopes].\n- Rename scope `keyword.other.function.inline` to `support.function.builtin` to better reflect [scope naming standards][scopes].\n- Rename scope for known block types from `storage.type.function.terraform` to `storage.type.terraform` to better reflect [scope naming standards][scopes].\n- Rename scope for block labels from `string.value.terraform` to `string.quoted.double.terraform` to better reflect [scope naming standards][scopes].\n- Rename meta-scope for block definitions from `meta.block.terraform` to `meta.type.terraform` to better reflect [scope naming standards][scopes].\n\n### Removed\n\n- Invalid constants `yes`, `no`, `on`, and `off`.\n- [Unit of measurement suffixes][uom-suffixes].\n- [Hexadecimal literals][hex-literals].\n- An extra `string.terraform` scope was previously added to all string literals.\n- [`atlas` blocks][atlas].\n\n### Fixed\n\n- Remove the `string.*` scope inside string templates.\n\n## v0.19.0 - 2019-08-20\n\n### Added\n\n- Symbol indexing for top-level blocks. (@patrickrgaffney - #38)\n\n## v0.18.0 - 2019-07-01\n\n### Added\n\n- Update list of built-in functions. (@Tenzer - #37)\n\n### Fixed\n\n- Allow hyphens in names of attributes inside string interpolation. (@Tenzer - #37)\n\n## v0.17.0 - 2019-01-25\n\n### Added\n\n- [Sublime syntax][subl-format] format. (@thiagoalmeidasa - #35)\n\n### Fixed\n\n- Better support for parenthesis inside string interpolation. (@NightsPaladin - #33)\n\n## v0.16.0 - 2018-08-08\n\n### Added\n\n- Snippet for `data` blocks. (@mschurenko - #32)\n\n## v0.15.0 - 2018-02-22\n\n### Added\n\n- Terraform constant `local`. (@digitalfiz - #30)\n\n## v0.14.0 - 2017-08-31\n\n### Added\n\n- Update list of built-in functions. (@gburiola - #27)\n\n### Removed\n\n- Built-in function `from`.\n\n## v0.13.1 - 2017-08-10\n\n### Fixed\n\n- Allow nested function calls.\n\n## v0.13.0 - 2017-06-07\n\n### Changed\n\n- Set default tab size to 2. (@kushmansingh - #25)\n- Set default indentation to spaces. (@kushmansingh - #25)\n\n## v0.12.2 - 2017-05-08\n\n### Fixed\n\n- Allow whitespace before `<<` when closing heredocs. (@GreatFruitOmsk - #24)\n\n## v0.12.1 - 2017-03-31\n\n### Fixed\n\n- Escape hyphens in block labels\n\n## v0.12.0 - 2017-03-30\n\n### Added\n\n- Code folding markers.\n- Built-in Terraform functions.\n\n### Fixed\n\n- Function calls and attribute access inside string templates.\n\n## v0.11.0 - 2017-03-08\n\n### Added\n\n- Heredocs.\n\n## v0.10.0 - 2017-02-14\n\n### Added\n\n- `.hcl` file extensions (@akarnani - #19)\n\n## v0.9.0 - 2017-02-12\n\n### Fixed\n\n- Handle nested string interpolation.\n\n## v0.8.0 - 2017-02-08\n\n### Added\n\n- String interpolation.\n- Unquoted block labels.\n\n### Fixed\n\n- De-emphasize variable assignment.\n\n## v0.7.0 - 2017-01-10\n\n### Added\n\n- C-style single line comments `//`. (@kerma - #16)\n\n## v0.6.0 - 2016-09-08\n\n### Added\n\n- Support for `data` blocks. (@Jonnymcc - #14)\n\n## v0.5.0 - 2016-07-05\n\n### Added\n\n- Snippet for `provisioner` blocks. (@ApsOps - #13)\n\n## v0.4.0 - 2016-06-08\n\n### Added\n\n- Match opening/closing brackets. (@alexlouden - #12)\n\n## v0.3.0 - 2016-06-08\n\n### Added\n\n- Snippets for `module` blocks. (@maplebed - #10)\n\n## v0.2.0 - 2016-03-01\n\n### Added\n\n- Blocks comments `/* ... */`. (@bigkraig - #8)\n\n## v0.1.0 - 2015-08-04\n\nInitial release.\n\n[atlas]: https://www.terraform.io/docs/configuration/terraform-enterprise.html\n[exponents]: https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#numeric-literals\n[hex-literals]: https://github.com/hashicorp/terraform/issues/20933#issuecomment-480050478\n[for-exp]: https://www.terraform.io/docs/configuration/expressions.html#for-expressions\n[import]: https://www.terraform.io/docs/import/usage.html\n[indices]: https://www.terraform.io/docs/configuration/expressions.html#indices-and-attributes\n[named-values]: https://www.terraform.io/docs/configuration/expressions.html#references-to-named-values\n[old-splat]: https://www.terraform.io/docs/configuration/expressions.html#legacy-attribute-only-splat-expressions\n[scopes]: https://www.sublimetext.com/docs/scope_naming.html\n[splat]: https://www.terraform.io/docs/configuration/expressions.html#splat-expressions\n[string-templates]: https://www.terraform.io/docs/configuration/expressions.html#string-literals\n[strings]: https://www.terraform.io/docs/configuration/expressions.html#string-literals\n[subl-format]: https://www.sublimetext.com/docs/syntax.html\n[tests]: https://www.sublimetext.com/docs/syntax.html#testing\n[types]: https://www.terraform.io/docs/configuration/types.html\n[uom-suffixes]: https://github.com/hashicorp/terraform/issues/3287#issuecomment-241560576\n"
  },
  {
    "path": "Comments.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>name</key>\n\t<string>Comments</string>\n\t<key>scope</key>\n\t<string>source.terraform, source.terraform-vars, source.hcl</string>\n\t<key>settings</key>\n\t<dict>\n\t\t<key>shellVariables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>TM_COMMENT_START</string>\n\t\t\t\t<key>value</key>\n\t\t\t\t<string># </string>\n\t\t\t</dict>\n\t\t\t <dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>TM_COMMENT_START_2</string>\n\t\t\t\t\t<key>value</key>\n\t\t\t\t\t<string>/*</string>\n\t\t\t </dict>\n\t\t\t <dict>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>TM_COMMENT_END_2</string>\n\t\t\t\t\t<key>value</key>\n\t\t\t\t\t<string>*/</string>\n\t\t\t </dict>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>TM_COMMENT_START_3</string>\n\t\t\t\t<key>value</key>\n\t\t\t\t<string>// </string>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Fold.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<plist version=\"1.0\">\n<dict>\n    <key>scope</key>\n    <string>source.hcl, source.terraform, source.terraform-vars</string>\n    <key>settings</key>\n    <dict>\n        <key>indentationFoldingEnabled</key>\n        <false/>\n        <key>foldScopes</key>\n        <array>\n            <!-- Basic Brackets -->\n            <dict>\n                <key>begin</key>\n                <string>punctuation.section.baces.begin</string>\n                <key>end</key>\n                <string>punctuation.section.baces.end</string>\n                <key>excludeTrailingNewlines</key>\n                <false/>\n            </dict>\n            <dict>\n                <key>begin</key>\n                <string>punctuation.section.brackets.begin</string>\n                <key>end</key>\n                <string>punctuation.section.brackets.end</string>\n                <key>excludeTrailingNewlines</key>\n                <false/>\n            </dict>\n            <dict>\n                <key>begin</key>\n                <string>punctuation.section.parens.begin</string>\n                <key>end</key>\n                <string>punctuation.section.parens.end</string>\n                <key>excludeTrailingNewlines</key>\n                <false/>\n            </dict>\n\n            <!-- Blocks -->\n            <dict>\n                <key>begin</key>\n                <string>punctuation.section.block.begin</string>\n                <key>end</key>\n                <string>punctuation.section.block.end</string>\n                <key>excludeTrailingNewlines</key>\n                <false/>\n            </dict>\n\n            <!-- Embedded JSON -->\n            <dict>\n                <key>begin</key>\n                <string>punctuation.section.mapping.begin</string>\n                <key>end</key>\n                <string>punctuation.section.mapping.end</string>\n                <key>excludeTrailingNewlines</key>\n                <false/>\n            </dict>\n            <dict>\n                <key>begin</key>\n                <string>punctuation.section.sequence.begin</string>\n                <key>end</key>\n                <string>punctuation.section.sequence.end</string>\n                <key>excludeTrailingNewlines</key>\n                <false/>\n            </dict>\n        </array>\n    </dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "HCL.sublime-settings",
    "content": "{\n\t\"tab_size\": 2,\n\t\"translate_tabs_to_spaces\": true,\n\t// Move '-' to sub-word separators\n\t\"word_separators\": \"./\\\\()\\\"':,.;<>~!@#$%^&*|+=[]{}`~?\",\n\t\"sub_word_separators\": \"_-\",\n}\n"
  },
  {
    "path": "HCL.sublime-syntax",
    "content": "%YAML 1.2\n#\n# This syntax definition is based on the Terraform guide:\n# https://www.terraform.io/docs/configuration/index.html\n#\n# As well as the HCL Native Syntax Spec:\n# https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md\n#\n# For documentation on the .subline-syntax format:\n# https://www.sublimetext.com/docs/syntax.html\n#\n# Regex's in this file support the Oniguruma regex engine:\n# https://raw.githubusercontent.com/kkos/oniguruma/5.9.6/doc/RE\n#\n---\nname: HCL\nscope: source.hcl\nversion: 2\n\nextends: Terraform.sublime-syntax\n\n# File Extensions:\n#\n# - \".hcl\": non-terraform tools often use this HCL syntax, i.e. Vault\n#   https://www.vaultproject.io/docs/configuration/\nfile_extensions:\n  - hcl\n"
  },
  {
    "path": "Indentation Rules.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<plist version=\"1.0\">\n<dict>\n\t<key>scope</key>\n\t<string>source.hcl, source.terraform, source.terraform-vars</string>\n\t<key>settings</key>\n\t<dict>\n\t\t<key>decreaseIndentPattern</key>\n\t\t<string>^\\s*[])}]</string>\n\t\t<key>increaseIndentPattern</key>\n\t\t<string><![CDATA[(?x)\n\t\t\t^.*            # anything on the line followed by:\n\t\t\t(\n\t\t\t  \\[[^]\"']*    # an open square bracket not followed by a closing square bracket or string punctuation\n\t\t\t| \\([^)\"']*    # an open bracket not followed by a closing bracket or string punctuation\n\t\t\t| \\{[^}\"']*    # an open curly brace not followed by a closing brace or string punctuation\n\t\t\t)$\n\t\t]]></string>\n\t\t<key>indentParens</key>\n\t\t<false/>\n\t\t<key>indentSquareBrackets</key>\n\t\t<false/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "JSON (Terraform).sublime-syntax",
    "content": "%YAML 1.2\n---\n# http://www.sublimetext.com/docs/syntax.html\nname: JSON (Terraform)\nscope: source.json.terraform\nversion: 2\n\nextends: Packages/JSON/JSON.sublime-syntax\n\nfile_extensions:\n  - tfstate\n\ncontexts:\n  double-quoted-string-body:\n    - meta_prepend: true\n    - include: Packages/Terraform/Terraform.sublime-syntax#string-interpolation\n    - include: Packages/Terraform/Terraform.sublime-syntax#aws-acl\n\n  strings:\n    - meta_prepend: true\n    - include: Packages/Terraform/Terraform.sublime-syntax#ip-address-strings\n\n  line-comments:\n    - meta_append: true\n    - include: Packages/Terraform/Terraform.sublime-syntax#inline-comments\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 Alex Louden\nCopyright (c) 2024 FichteFoll <fichtefoll2@googlemail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Terraform\n\n[Terraform][.tf] configuration file syntax definitions and snippets for [Sublime Text][].\n\n![preview](preview.png)\n\n\n## Installation\n\n### Using Package Control\n\n1. Install [Package Control][], if needed.\n2. Open the palette by pressing:\n    - Windows, Linux: <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>\n    - MacOS: <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>\n3. Select _Package Control: Install Package_.\n4. Select _Terraform_.\n\n### Manually\n\n1. Open the Sublime Text Packages folder:\n    - MacOS: `~/Library/Application Support/Sublime Text/Packages/`\n    - Windows: `%APPDATA%/Sublime Text/Packages/`\n    - Linux (Ubuntu/Debian): `~/.config/sublime-text/Packages/`\n2. Clone this repo.\n\n[sublime text]: https://sublimetext.com/\n[.tf]: https://developer.hashicorp.com/terraform/language/syntax/configuration\n[package control]: https://packagecontrol.io/installation\n"
  },
  {
    "path": "Symbols - Indexed.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n   <key>name</key>\n   <string>Local Symbol List</string>\n   <key>scope</key>\n   <string>\n      entity.name.label.terraform\n   </string>\n   <key>settings</key>\n   <dict>\n      <key>showInIndexedSymbolList</key>\n      <integer>1</integer>\n   </dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Symbols - Local.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n   <key>name</key>\n   <string>Local Symbol List</string>\n   <key>scope</key>\n   <string>\n      meta.block.head.terraform\n   </string>\n   <key>settings</key>\n   <dict>\n      <key>showInSymbolList</key>\n      <integer>1</integer>\n      <key>symbolTransformation</key>\n      <string>\n         <!-- Removes trailing whitespace from symbol. -->\n         <![CDATA[/\\s*$//]]>\n      </string>\n   </dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Terraform Plan.sublime-syntax",
    "content": "%YAML 1.2\n---\n# http://www.sublimetext.com/docs/syntax.html\n# https://github.com/hashicorp/terraform/blob/337bf8e11b75dff87509455cabee60b023dd586e/internal/command/jsonformat/plan.go#L201\nname: Terraform Plan\nscope: source.diff.terraform\nversion: 2\n\nfile_extensions:\n  - tfplan\n  - tf.plan\n\ncontexts:\n  prototype:\n    - include: comments\n\n  main:\n    - include: comments\n    - include: diffs\n    - include: summary\n\n  comments:\n    - match: '#'\n      scope: punctuation.definition.comment.terraform\n      push:\n        - meta_scope: comment.line.number-sign.terraform\n        - include: pop-eol\n\n  annotations:\n    - meta_include_prototype: false\n    - match: ->\n      scope: keyword.operator.assignment.terraform\n    - match: \\(known after apply\\)\n      scope: comment.block.terraform\n    - match: \\bnull\\b\n      scope: constant.language.null.terraform\n\n  diffs:\n    - match: ^\\+/-\n      scope: punctuation.definition.changed.diff\n      push: line-created-then-destroyed\n    - match: ^-/\\+\n      scope: punctuation.definition.changed.diff\n      push: line-destroyed-then-created\n    - match: ^!\n      scope: punctuation.definition.changed.diff\n      push: line-changed\n    - match: ^\\+\n      scope: punctuation.definition.inserted.diff\n      push: line-inserted\n    - match: ^-\n      scope: punctuation.definition.deleted.diff\n      push: line-deleted\n    - match: \\[$\\n?\n      push: bracket-body\n    - match: \\{$\\n?\n      push: brace-body\n\n  line-deleted:\n    - meta_scope: markup.deleted.diff\n    - include: line-deleted.hanging-eol-brackets\n    - include: pop-eol\n    - include: annotations\n\n  line-inserted:\n    - meta_scope: markup.inserted.diff\n    - include: line-inserted.hanging-eol-brackets\n    - include: pop-eol\n    - include: annotations\n\n  line-changed:\n    - meta_scope: markup.changed.updated-in-place.diff\n    - include: line-changed.hanging-eol-brackets\n    - include: pop-eol\n    - include: annotations\n\n  line-created-then-destroyed:\n    - meta_scope: markup.changed.created-then-destroyed.diff\n    - include: line-changed.hanging-eol-brackets\n    - include: pop-eol\n    - include: annotations\n\n  line-destroyed-then-created:\n    - meta_scope: markup.changed.destroyed-then-created.diff\n    - include: line-changed.hanging-eol-brackets\n    - include: pop-eol\n    - include: annotations\n\n  line-ignored:\n    - meta_scope: comment.line.diff\n    - include: pop-eol\n    - include: annotations\n\n  bracket-body:\n    - match: ^(?=\\s*\\])\n      pop: 1\n    - include: diffs\n\n  brace-body:\n    - match: ^\\s*\\}\n      pop: 1\n    - include: diffs\n\n  line-deleted.hanging-eol-brackets:\n    - match: \\[$\\n?\n      set: line-deleted.bracket-body\n    - match: \\{$\\n?\n      set: line-deleted.brace-body\n\n  line-deleted.bracket-body:\n    - match: ^(?=\\s*\\])\n      set: line-deleted\n    - include: diffs\n\n  line-deleted.brace-body:\n    - match: ^\\s*\\}\n      scope: markup.deleted.diff\n      pop: 1\n    - include: diffs\n\n  line-inserted.hanging-eol-brackets:\n    - match: \\[$\\n?\n      set: line-inserted.bracket-body\n    - match: \\{$\\n?\n      set: line-inserted.brace-body\n\n  line-inserted.bracket-body:\n    - match: ^(?=\\s*\\])\n      set: line-inserted\n    - include: diffs\n\n  line-inserted.brace-body:\n    - match: ^(?=\\s*\\})\n      set: line-inserted\n    - include: diffs\n\n  line-changed.hanging-eol-brackets:\n    - match: \\[$\\n?\n      set: line-changed.bracket-body\n    - match: \\{$\\n?\n      set: line-changed.brace-body\n\n  line-changed.bracket-body:\n    - match: ^\\s*\\]\n      scope: markup.changed.diff\n      pop: 1\n    - include: diffs\n\n  line-changed.brace-body:\n    - match: ^\\s*\\}\n      scope: markup.changed.diff\n      pop: 1\n    - include: diffs\n\n  summary:\n    - match: ^(?=Plan:[ ]\\d)\n      push:\n        - meta_scope: meta.block.summary.terraform\n        - include: pop-eol\n        - match: ','\n          scope: punctuation.separator.sequence.terraform\n        - match: \\.\n          scope: punctuation.terminator.terraform\n        - match: (\\d+) to add\n          scope: markup.inserted.terraform\n          captures:\n            1: meta.number.integer.decimal.terraform constant.numeric.value.terraform\n        - match: (\\d+) to change\n          scope: markup.changed.terraform\n          captures:\n            1: meta.number.integer.decimal.terraform constant.numeric.value.terraform\n        - match: (\\d+) to destroy\n          scope: markup.deleted.terraform\n          captures:\n            1: meta.number.integer.decimal.terraform constant.numeric.value.terraform\n\n  pop-eol:\n    - match: \\n|$\n      pop: 1\n"
  },
  {
    "path": "Terraform-vars.sublime-settings",
    "content": "{\n\t\"tab_size\": 2,\n\t\"translate_tabs_to_spaces\": true,\n\t// Move '-' to sub-word separators\n\t\"word_separators\": \"./\\\\()\\\"':,.;<>~!@#$%^&*|+=[]{}`~?\",\n\t\"sub_word_separators\": \"_-\",\n}\n"
  },
  {
    "path": "Terraform-vars.sublime-syntax",
    "content": "%YAML 1.2\n#\n# This syntax definition is based on the Terraform guide:\n# https://www.terraform.io/docs/configuration/index.html\n#\n# As well as the HCL Native Syntax Spec:\n# https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md\n#\n# For documentation on the .subline-syntax format:\n# https://www.sublimetext.com/docs/syntax.html\n#\n# Regex's in this file support the Oniguruma regex engine:\n# https://raw.githubusercontent.com/kkos/oniguruma/5.9.6/doc/RE\n#\n---\nname: Terraform (variables)\nscope: source.terraform-vars\nversion: 2\n\nextends: Terraform.sublime-syntax\n\n# File Extensions:\n#\n# - \".tfvars\": variables definitions file\n#   https://developer.hashicorp.com/terraform/language/values/variables#variable-definition-files\n# - \".tfbackend\": backend configuration file\n#   https://developer.hashicorp.com/terraform/language/backend#file\nfile_extensions:\n  - tfvars\n  - tfbackend\n"
  },
  {
    "path": "Terraform.sublime-settings",
    "content": "{\n\t\"tab_size\": 2,\n\t\"translate_tabs_to_spaces\": true,\n\t// Move '-' to sub-word separators\n\t\"word_separators\": \"./\\\\()\\\"':,.;<>~!@#$%^&*|+=[]{}`~?\",\n\t\"sub_word_separators\": \"_-\",\n}\n"
  },
  {
    "path": "Terraform.sublime-syntax",
    "content": "%YAML 1.2\n#\n# This syntax definition is based on the Terraform guide:\n# https://www.terraform.io/docs/language/index.html\n#\n# As well as the HCL Native Syntax Spec:\n# https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md\n# (previously https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md)\n#\n# For documentation on the .subline-syntax format:\n# https://www.sublimetext.com/docs/syntax.html\n#\n# Regex's in this file support the Oniguruma regex engine:\n# https://raw.githubusercontent.com/kkos/oniguruma/5.9.6/doc/RE\n#\n---\nname: Terraform\nscope: source.terraform\nversion: 2\n\n# File Extensions:\n#\n# - \".tf\": the standard file extension\n#   https://www.terraform.io/docs/language/index.html\nfile_extensions:\n  - tf\n  - nomad\n\nvariables:\n  # Identifiers: ID_Start (ID_Continue | '-')*;\n  #\n  # There is an undocumented exception\n  # that an underscore character is also accepted\n  # as an id start character.\n  #\n  # https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#identifiers\n  # http://unicode.org/reports/tr31/#Table_Lexical_Classes_for_Identifiers\n  ID_Start: '[\\p{ID_Start}_]'\n  ID_Continue: '[\\p{ID_Continue}-]'\n  identifier: (?:{{ID_Start}}{{ID_Continue}}*)\n\n  # Exponent: \"e\" or \"E\" followed by an optional sign\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#numeric-literals\n  exponent: ([Ee][+-]?)\n\n  # Character Escapes:\n  #\n  #   - \\n: newline\n  #   - \\r: carriage return\n  #   - \\t: tab\n  #   - \\\": quote\n  #   - \\\\: backslash\n  #   - \\uNNNN: unicode char (NNNN is 4 hex digits)\n  #   - \\uNNNNNNNN: unicode char (NNNNNNNN us 8 digits)\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#template-expressions\n  char_escapes: \\\\[nrt\"\\\\]|\\\\u(\\h{8}|\\h{4})\n\n  # String literals (basically static and single-line strings)\n  # for usage in look-aheads.\n  #\n  # https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#template-expressions\n  string_literal: '\"(?:[^\"]|{{char_escapes}})*\"'\n\n  # Template literals\n  #\n  # https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#template-literals\n  template_literal: '(?:\\$\\$|%%)\\{'\n\n  # A block label\n  #\n  # https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#structural-elements\n  label: (?:{{identifier}}|{{string_literal}})\n\n  # Terraform Named Values\n  #\n  # https://www.terraform.io/docs/language/expressions/references.html\n  named_values: (?:var|local|module|data|path|terraform|each|count|self)\n\n  # Block types that are known to Terraform.\n  #\n  # data: https://developer.hashicorp.com/terraform/language/data-sources\n  # ephemeral: https://developer.hashicorp.com/terraform/language/resources/ephemeral\n  # resource: https://developer.hashicorp.com/terraform/language/resources/syntax\n  terraform_typed_and_named_blocks: (?:data|ephemeral|resource)\n  # module: https://developer.hashicorp.com/terraform/language/modules/syntax\n  # output: https://developer.hashicorp.com/terraform/language/values/outputs\n  # provider: https://developer.hashicorp.com/terraform/language/providers/configuration\n  # variable: https://developer.hashicorp.com/terraform/language/values/variables\n  terraform_named_blocks: (?:module|output|provider|variable)\n  # locals: https://developer.hashicorp.com/terraform/language/values/locals\n  # terraform: https://developer.hashicorp.com/terraform/language/terraform#terraform-block-syntax\n  # (Currently unused because they do not have special behavior implemented.)\n  terraform_other_blocks: (?:locals|terraform)\n\n  # Terraform built-in type keywords\n  #\n  # https://www.terraform.io/docs/language/expressions/type-constraints.html#primitive-types\n  # https://www.terraform.io/docs/language/expressions/type-constraints.html#dynamic-types-the-quot-any-quot-constraint\n  terraform_type_keywords: (?:any|string|number|bool)\n\n  # Built-In Functions\n  #\n  # https://developer.hashicorp.com/terraform/language/functions\n  builtin_functions: |-\n    (?x:\n    # numbers\n      abs | ceil | floor | log | max | min | parseint | pow | signum\n    # string\n    | chomp | endswith | format | formatlist | indent | join | lower | regex\n    | regexall | replace | split | startswith | strcontains | strrev | substr\n    | templatestring | title | trim | trimprefix | trimsuffix | trimspace | upper\n    # collection\n    | alltrue | anytrue | chunklist | coalesce | coalescelist | compact | concat\n    | contains | distinct | element | flatten | index | keys | length | list\n    | lookup | map | matchkeys | merge | one | range | reverse | setintersection\n    | setproduct | setsubtract | setunion | slice | sort | sum | transpose\n    | values | zipmap\n    # encoding\n    | base64decode | base64encode | base64gzip | csvdecode | jsondecode\n    | jsonencode | textdecodebase64 | textencodebase64 | urlencode | yamldecode\n    | yamlencode\n    # filesystem\n    | abspath | dirname | pathexpand | basename | file | fileexists | fileset\n    | filebase64 | templatefile\n    # date and time\n    | formatdate | plantimestamp | timeadd | timecmp | timestamp\n    # hash and crypto\n    | base64sha256 | base64sha512 | bcrypt | filebase64sha256\n    | filebase64sha512 | filemd5 | filesha1 | filesha256 | filesha512 | md5\n    | rsadecrypt | sha1 | sha256 | sha512 | uuid | uuidv5\n    # ip network\n    | cidrhost | cidrnetmask | cidrsubnet | cidrsubnets\n    # type conversion\n    | can | issensitive | nonsensitive | sensitive | tobool | tolist | tomap\n    | tonumber | toset | tostring | try | type\n    # terraform-specific\n    | provider::terraform::(?:encode_tfvars | decode_tfvars | encode_expr)\n    # deprecated/old\n    | filemd1\n    )\n\n  # IPs and CIDR\n  ## IPv6 pattern stolen lovingly from https://github.com/tijn/hosts.tmLanguage,\n  ## where Michael Lyons adapted them from David M. Szydek https://stackoverflow.com/a/17871737.\n  zero_to_32: (?:3[0-2]|[12][0-9]|[0-9])\n  zero_to_128: (?:12[0-8]|1[01][0-9]|[1-9][0-9]|[0-9])\n  zero_to_255: (?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:[1-9][0-9])|[0-9])\n  zero_to_65535: (?:6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])\n  ipv4: (?:(?:{{zero_to_255}}\\.){3}{{zero_to_255}})\n  ipv6: |-\n    (?xi:\n      (?:::(?:ffff(?::0{1,4}){0,1}:){0,1}{{ipv4}})          # ::255.255.255.255  ::ffff:255.255.255.255  ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses and IPv4-translated addresses)\n      |(?:(?:[0-9a-f]{1,4}:){1,4}:{{ipv4}})                 # 2001:db8:3:4::192.0.2.33  64:ff9b::192.0.2.33                       (IPv4-Embedded IPv6 Address)\n      |(?:fe80:(?::[0-9a-f]{1,4}){0,4}%[0-9a-z]{1,})        # fe80::7:8%eth0     fe80::7:8%1                                      (link-local IPv6 addresses with zone index)\n      |(?:(?:[0-9a-f]{1,4}:){7,7}    [0-9a-f]{1,4})         # 1:2:3:4:5:6:7:8\n      |   (?:[0-9a-f]{1,4}:      (?::[0-9a-f]{1,4}){1,6})   # 1::3:4:5:6:7:8     1::3:4:5:6:7:8   1::8\n      |(?:(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,5})   # 1::4:5:6:7:8       1:2::4:5:6:7:8   1:2::8\n      |(?:(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,4})   # 1::5:6:7:8         1:2:3::5:6:7:8   1:2:3::8\n      |(?:(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,3})   # 1::6:7:8           1:2:3:4::6:7:8   1:2:3:4::8\n      |(?:(?:[0-9a-f]{1,4}:){1,5}(?::[0-9a-f]{1,4}){1,2})   # 1::7:8             1:2:3:4:5::7:8   1:2:3:4:5::8\n      |(?:(?:[0-9a-f]{1,4}:){1,6}   :[0-9a-f]{1,4})         # 1::8               1:2:3:4:5:6::8   1:2:3:4:5:6::8\n      |(?:(?:[0-9a-f]{1,4}:){1,7}   :)                      # 1::                                 1:2:3:4:5:6:7::\n      |(?::(?:(?::[0-9a-f]{1,4}){1,7}|:))                   # ::2:3:4:5:6:7:8    ::2:3:4:5:6:7:8  ::8       ::\n    )\n\ncontexts:\n  main:\n    - include: comments\n    - include: attribute-definition\n    - include: imports\n    - include: blocks\n    - include: expressions\n\n  comments:\n    - include: inline-comments\n    - include: block-comments\n\n  # Expressions:\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#expression-terms\n  expressions:\n    - include: literals\n    - include: operators\n    - include: brackets\n    - include: objects\n    - include: attribute-access\n    - include: functions\n    - include: parens\n    - include: identifiers\n    - include: illegal-strays\n\n  comma:\n    - match: \\,\n      comment: Commas - used in certain expressions\n      scope: punctuation.separator.terraform\n\n  parens:\n    - match: \\(\n      scope: punctuation.section.parens.begin.terraform\n      comment: Parens - matched *after* function syntax\n      push: paren-body\n\n  paren-body:\n    - meta_scope: meta.parens.terraform\n    - match: \\)\n      scope: punctuation.section.parens.end.terraform\n      pop: 1\n    - include: expressions\n\n  # Literal Values: Numbers, Language Constants, and Strings\n  #\n  #   Strings are _technically_ part of the \"expression sub-language\",\n  #   but make the most sense to be part of this stack.\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#literal-values\n  literals:\n    - include: numeric-literals\n    - include: language-constants\n    - include: string-literals\n    - include: heredoc\n    - include: type-keywords\n    - include: named-value-references\n\n  named-value-references:\n    - match: \\b{{named_values}}\\b\n      comment: Special variables available only to Terraform.\n      scope: variable.language.terraform\n\n  type-keywords:\n    - match: \\b{{terraform_type_keywords}}\\b\n      comment: Type keywords known to Terraform.\n      scope: storage.type.terraform\n\n  # Inline Comments: begin at the operator, end at the end of the line.\n  #\n  # https://www.terraform.io/docs/language/syntax/configuration.html#comments\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#comments-and-whitespace\n  inline-comments:\n    - match: '#|//'\n      comment: Inline Comments\n      scope: punctuation.definition.comment.terraform\n      push: inline-comment-body\n\n  inline-comment-body:\n    - meta_scope: comment.line.terraform\n    - match: $\\n?\n      scope: punctuation.definition.comment.terraform\n      pop: 1\n\n  # Block comments: start and end delimiters for multi-line comments.\n  #\n  # https://www.terraform.io/docs/language/syntax/configuration.html#comments\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#comments-and-whitespace\n  block-comments:\n    - match: /\\*\n      comment: Block comments\n      scope: punctuation.definition.comment.terraform\n      push: block-comments-body\n\n  block-comments-body:\n    - meta_scope: comment.block.terraform\n    - match: \\*/\n      scope: punctuation.definition.comment.terraform\n      pop: 1\n\n  # Language Constants: booleans and `null`.\n  #\n  # https://www.terraform.io/docs/language/expressions/types.html#literal-expressions\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#literal-values\n  language-constants:\n    - match: \\btrue\\b\n      scope: constant.language.boolean.true.terraform\n    - match: \\bfalse\\b\n      scope: constant.language.boolean.false.terraform\n    - match: \\bnull\\b\n      scope: constant.language.null.terraform\n\n  # Numbers: Integers, fractions and exponents\n  #\n  # https://www.terraform.io/docs/language/expressions/types.html\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#numeric-literals\n  numeric-literals:\n    - match: \\b\\d+{{exponent}}\\d+\\b\n      comment: Integer, no fraction, optional exponent\n      scope: meta.number.float.decimal.terraform constant.numeric.value.terraform\n    - match: \\b\\d+(\\.)\\d+(?:{{exponent}}\\d+)?\\b\n      comment: Integer, fraction, optional exponent\n      scope: meta.number.float.decimal.terraform constant.numeric.value.terraform\n      captures:\n        1: punctuation.separator.decimal.terraform\n    - match: \\b\\d+\\b\n      comment: Integers\n      scope: meta.number.integer.decimal.terraform constant.numeric.value.terraform\n\n  # Strings:\n  #\n  # https://www.terraform.io/docs/language/expressions/types.html\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#template-expressions\n  string-literals:\n    - include: ip-address-strings\n    - match: \\\"\n      comment: Strings\n      scope: punctuation.definition.string.begin.terraform\n      push: string-body\n\n  string-body:\n    - meta_scope: meta.string.terraform string.quoted.double.terraform\n    - match: \\\"\n      scope: punctuation.definition.string.end.terraform\n      pop: 1\n    - match: \\n\n      scope: invalid.illegal.unclosed-string.terraform\n      pop: 1\n    - include: character-escapes\n    - include: string-interpolation\n    - include: aws-acl\n\n  character-escapes:\n    - match: '{{char_escapes}}'\n      comment: Character Escapes\n      scope: constant.character.escape.terraform\n\n  template-literals:\n    - match: '{{template_literal}}'\n      comment: Template Literal\n      scope: constant.character.escape.terraform\n\n  aws-acl:\n    - match: (?=\\barn:aws:)\n      push: aws-acl-body\n\n  aws-acl-body:\n    - clear_scopes: 1  # Clear the string.* scope.\n    - meta_scope: variable.language.acl.terraform\n    - match: ([$%]\\{)(~)?\n      captures:\n        1: punctuation.section.interpolation.begin.terraform\n        2: keyword.operator.template.trim.left.terraform\n      push: acl-interpolation-body\n    - match: :|/\n      scope: punctuation.separator.sequence.terraform\n    - match: \\*\n      scope: constant.other.wildcard.asterisk.terraform\n    - match: (?![\\w-])\n      pop: 1\n\n  acl-interpolation-body:\n    - meta_scope: meta.interpolation.terraform\n    - meta_content_scope: source.terraform\n    - include: string-interpolation-body\n\n  ip-address-strings:\n    - match: (\")({{ipv6}})(?:(/)({{zero_to_128}}))?(\")\n      scope: meta.string.terraform string.quoted.double.terraform\n      captures:\n        1: punctuation.definition.string.begin.terraform\n        2: meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n        3: punctuation.separator.terraform\n        4: constant.other.range.terraform\n        5: punctuation.definition.string.end.terraform\n    - match: (\")((\\[){{ipv6}}(\\]))(?:(/)({{zero_to_128}})|(:)({{zero_to_65535}}))?(\")\n      scope: meta.string.terraform string.quoted.double.terraform\n      captures:\n        1: punctuation.definition.string.begin.terraform\n        2: meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n        3: punctuation.definition.constant.begin.terraform\n        4: punctuation.definition.constant.end.terraform\n        5: punctuation.separator.terraform\n        6: constant.other.range.terraform\n        7: punctuation.separator.terraform\n        8: constant.other.port.terraform\n        9: punctuation.definition.string.end.terraform\n    - match: (\")({{ipv4}})(?:(/)({{zero_to_32}})|(:)({{zero_to_65535}}))?(\")\n      scope: meta.string.terraform string.quoted.double.terraform\n      captures:\n        1: punctuation.definition.string.begin.terraform\n        2: meta.number.integer.other.terraform constant.numeric.ip-address.v4.terraform\n        3: punctuation.separator.terraform\n        4: constant.other.range.terraform\n        5: punctuation.separator.terraform\n        6: constant.other.port.terraform\n        7: punctuation.definition.string.end.terraform\n\n  # String Interpolation: (\"${\" | \"${~\") Expression (\"}\" | \"~}\"\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#templates\n  string-interpolation:\n    - include: template-literals\n    - match: ([$%]\\{)(~)?\n      captures:\n        1: punctuation.section.interpolation.begin.terraform\n        2: keyword.operator.template.trim.left.terraform\n      push: string-interpolation-body\n\n  string-interpolation-body:\n    - clear_scopes: 1  # Clear the string.* scope.\n    - meta_scope: meta.interpolation.terraform\n    - meta_content_scope: source.terraform\n    - match: (~)?(\\})\n      captures:\n        1: keyword.operator.template.trim.right.terraform\n        2: punctuation.section.interpolation.end.terraform\n      pop: 1\n    - match: \\bif\\b\n      scope: keyword.control.conditional.if.terraform\n    - match: \\belse\\b\n      scope: keyword.control.conditional.else.terraform\n    - match: \\bendif\\b\n      scope: keyword.control.conditional.end.terraform\n    - match: \\bfor\\b\n      scope: keyword.control.loop.for.terraform\n    - match: \\bendfor\\b\n      scope: keyword.control.loop.end.terraform\n    - match: \\bin\\b\n      scope: keyword.control.loop.in.terraform\n    - include: expressions\n\n  # String Heredocs\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#template-expressions\n  heredoc:\n    - match: (\\<\\<\\-?)\\s*({{identifier}})\\s*$\n      comment: String Heredoc's\n      captures:\n        1: keyword.operator.heredoc.terraform\n        2: keyword.control.heredoc.terraform\n      push: heredoc-body\n\n  heredoc-body:\n    - meta_content_scope: meta.string.terraform string.unquoted.heredoc.terraform\n    - match: ^\\s*\\2\\s*$\n      comment: The heredoc token identifier (second capture above).\n      scope: keyword.control.heredoc.terraform\n      pop: 1\n    - include: string-interpolation\n\n  # Operators:\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#operators-and-delimiters\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#operations\n  operators:\n    - match: \\>\\=   # >=\n      scope: keyword.operator.comparison.terraform\n    - match: \\<\\=   # <=\n      scope: keyword.operator.comparison.terraform\n    - match: \\=\\=   # ==\n      scope: keyword.operator.comparison.terraform\n    - match: \\!\\=   # !=\n      scope: keyword.operator.comparison.terraform\n    - match: \\+     # +\n      scope: keyword.operator.arithmetic.terraform\n    - match: \\-     # -\n      scope: keyword.operator.arithmetic.terraform\n    - match: \\*     # *\n      scope: keyword.operator.arithmetic.terraform\n    - match: \\/     # /\n      scope: keyword.operator.arithmetic.terraform\n    - match: \\%     # %\n      scope: keyword.operator.arithmetic.terraform\n    - match: \\&\\&   # &&\n      scope: keyword.operator.logical.terraform\n    - match: \\|\\|   # ||\n      scope: keyword.operator.logical.terraform\n    - match: \\!     # !\n      scope: keyword.operator.logical.terraform\n    - match: \\>     # >\n      scope: keyword.operator.comparison.terraform\n    - match: \\<     # <\n      scope: keyword.operator.comparison.terraform\n    - match: \\?     # ?\n      scope: keyword.operator.ternary.terraform\n    - match: \\.\\.\\. # ...\n      scope: keyword.operator.terraform\n    - match: ':'  # :\n      scope: keyword.operator.ternary.terraform\n\n  # Terraform \"import\" statements\n  #\n  # https://www.terraform.io/docs/cli/import/usage.html\n  imports:\n    - match: \\b(terraform)\\s+(import)\\b\n      comment: Importing resources\n      captures:\n        1: support.constant.terraform\n        2: keyword.control.import.terraform\n      push: import-body\n\n  import-body:\n    - match: \\\"\n      comment: String literal label\n      scope: punctuation.definition.string.begin.terraform\n      push: literal-label-body\n    - match: '{{identifier}}'\n      comment: Identifier label\n      scope: entity.name.label.terraform\n    - include: numeric-literals\n    - include: attribute-access\n    - match: $\\n?\n      comment: Pop at newline\n      pop: 1\n\n  literal-label-body:\n    - meta_scope: meta.string.terraform string.quoted.double.terraform\n    - match: \\\"\n      scope: punctuation.definition.string.end.terraform\n      pop: 1\n\n  # Brackets: matches tuples and subscript notation\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#index-operator\n  brackets:\n    - match: \\[\n      scope: punctuation.section.brackets.begin.terraform\n      push: bracket-body\n\n  bracket-body:\n    - meta_scope: meta.brackets.terraform\n    - match: (\\*)?\\]\n      comment: Full-splat operator\n      scope: punctuation.section.brackets.end.terraform\n      captures:\n        1: keyword.operator.splat.terraform\n      pop: 1\n    - include: comma\n    - include: comments\n    - include: tuple-for-expression\n    - include: expressions\n\n  # Objects: collection values\n  #\n  #   Allows keys as identifiers, strings, and computed values wrapped in parens.\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#collection-values\n  objects:\n    - match: \\{\n      scope: punctuation.section.braces.begin.terraform\n      push: object-body\n\n  object-body:\n    - meta_scope: meta.braces.terraform\n    - match: \\}\n      scope: punctuation.section.braces.end.terraform\n      pop: 1\n    - include: object-for-expression\n    - include: comments\n    - match: (?=({{identifier}}|\\\".*?\\\")\\s*=)\n      push:\n        - object-value\n        - assignment-operator\n        - object-literal-key\n    - match: \\(\n      comment: Computed object key (any expression between parens)\n      scope: punctuation.section.parens.begin.terraform\n      push:\n        - object-value\n        - assignment-operator\n        - object-computed-key\n    - include: Packages/Terraform/JSON (Terraform).sublime-syntax#object-body\n\n  object-computed-key:\n    - meta_scope: meta.mapping.key.terraform meta.parens.terraform\n    - include: paren-body\n\n  object-literal-key:\n    - match: '{{identifier}}'\n      scope: meta.mapping.key.terraform meta.string.terraform string.unquoted.terraform\n      pop: 1\n    - match: (\\\").*?(\\\")\n      scope: meta.mapping.key.terraform meta.string.terraform string.quoted.double.terraform\n      captures:\n        1: punctuation.definition.string.begin.terraform\n        2: punctuation.definition.string.end.terraform\n      pop: 1\n    - include: else-pop\n\n  assignment-operator:\n    - match: =\n      scope: keyword.operator.assignment.terraform\n      pop: 1\n    - include: else-pop\n\n  # Object key values: pop at comma, newline, and closing-bracket\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#collection-values\n  object-value:\n    - include: comments\n    - match: \\,\n      comment: Pop scope on comma.\n      scope: punctuation.separator.terraform\n      pop: 1\n    - match: $\\n?\n      comment: Pop scope on EOL.\n      pop: 1\n    - match: (?=\\})\n      comment: Lookahead (don't consume) and pop scope on a bracket.\n      scope: punctuation.section.braces.end.terraform\n      pop: 1\n    - include: expressions\n\n  # Attribute Access: \".\" Identifier\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#attribute-access-operator\n  attribute-access:\n    - match: \\.\n      scope: punctuation.accessor.dot.terraform\n      push: member\n\n  member:\n    - include: comments\n    - match: '{{identifier}}'\n      comment: Attribute access\n      scope: variable.other.member.terraform\n      pop: 1\n    - match: \\d+\n      comment: Subscript\n      scope: meta.number.integer.decimal.terraform constant.numeric.value.terraform\n      pop: 1\n    - match: \\*\n      comment: Attribute-only splat\n      scope: keyword.operator.splat.terraform\n      pop: 1\n    - include: else-pop\n\n  # Attribute Definition: Identifier \"=\" Expression Newline\n  #\n  # The \"=\" operator cannot be immediately followed by \"=\"\n  # \">\", as those are other operators, not attr definitions.\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#attribute-definitions\n  attribute-definition:\n    - match: (?=(\\()?({{identifier}})(\\))?\\s*(\\=(?![\\=\\>])))\n      push:\n        - assignment-operator\n        - attribute-key\n\n  attribute-key:\n    - match: \\((?={{identifier}}\\))\n      scope: punctuation.section.parens.begin.terraform\n      set:\n        - attribute-key-end\n        - attribute-key\n    # https://developer.hashicorp.com/terraform/language/meta-arguments/for_each\n    - match: for_each\\b\n      scope: variable.declaration.terraform keyword.control.loop.for.terraform\n      pop: 1\n    # https://developer.hashicorp.com/terraform/language/meta-arguments/count\n    - match: count\\b\n      scope: variable.declaration.terraform keyword.control.conditional.terraform\n      pop: 1\n    - match: '{{identifier}}'\n      scope: variable.declaration.terraform variable.other.readwrite.terraform\n      pop: 1\n\n  attribute-key-end:\n    - meta_scope: meta.parens.terraform\n    - match: \\)\n      scope: punctuation.section.parens.end.terraform\n      pop: 1\n\n  # Functions: Terraform builtins and unknown\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#functions-and-function-calls\n  # https://www.terraform.io/docs/language/expressions/function-calls.html\n  functions:\n    - match: (?={{builtin_functions}}\\()\n      push: builtin-function-name\n    - match: (?=(?:{{identifier}}::)*{{identifier}}\\()\n      push: other-function-name\n\n  builtin-function-name:\n    - meta_content_scope: meta.function-call.identifier.terraform\n    - include: function-argument-list\n    - include: namespaces\n    - match: '{{identifier}}'\n      scope: support.function.builtin.terraform\n\n  other-function-name:\n    - meta_content_scope: meta.function-call.identifier.terraform\n    - include: function-argument-list\n    - include: namespaces\n    - match: '{{identifier}}'\n      scope: variable.function.terraform\n\n  function-argument-list:\n    - match: \\(\n      scope: punctuation.section.parens.begin.terraform\n      set: function-argument-list-body\n\n  function-argument-list-body:\n    - meta_scope: meta.function-call.arguments.terraform meta.parens.terraform\n    - match: \\)\n      scope: punctuation.section.parens.end.terraform\n      pop: 1\n    - include: comments\n    - include: expressions\n    - include: comma\n\n  # Tuple for-Expression:\n  #\n  # \"[\" \"for\" Identifier (\",\" Identifier)? \"in\" Expression \":\" Expression (\"if\" Expression)? \"]\";\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#for-expressions\n  # https://www.terraform.io/docs/language/expressions/for.html\n  tuple-for-expression:\n    - match: \\bfor\\b\n      comment: for expression (arrays)\n      scope: keyword.control.loop.for.terraform\n      set: tuple-for-expression-body\n\n  tuple-for-expression-body:\n    - meta_content_scope: meta.brackets.terraform\n    - match: \\]\n      scope: meta.brackets.terraform punctuation.section.brackets.end.terraform\n      pop: 1\n    - include: for-expression-body\n\n  # Object for-Expression:\n  #\n  # \"{\" \"for\" Identifier (\",\" Identifier)? \"in\" Expression \":\" Expression \"=>\" Expression \"...\"? (\"if\" Expression)? \"}\";\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#for-expressions\n  # https://www.terraform.io/docs/language/expressions/for.html\n  object-for-expression:\n    - match: \\bfor\\b\n      comment: for expression (arrays)\n      scope: keyword.control.loop.for.terraform\n      set: object-for-expression-body\n\n  object-for-expression-body:\n    - meta_content_scope: meta.braces.terraform\n    - match: \\}\n      scope: meta.braces.terraform punctuation.section.braces.end.terraform\n      pop: 1\n    - match: \\=\\>\n      scope: punctuation.separator.key-value.terraform\n    - include: for-expression-body\n\n  # Shared body syntax for tuple and object for-expressions.\n  # They require different `set` blocks because they are\n  # pop'd with different characters and objects allow `=>`.\n  for-expression-body:\n    - match: \\bin\\b\n      scope: keyword.operator.iteration.in.terraform\n    - match: \\bif\\b\n      scope: keyword.control.conditional.terraform\n    - match: '\\:'\n      scope: punctuation.section.block.loop.for.terraform\n    - include: expressions\n    - include: comments\n    - include: comma\n\n  namespaces:\n    - match: ({{identifier}})(::)\n      captures:\n        1: variable.namespace.terraform\n        2: punctuation.accessor.double-colon.terraform\n\n  identifiers:\n    - match: '{{identifier}}'\n      scope: variable.other.readwrite.terraform\n\n  illegal-strays:\n    - match: '[\\])}]'\n      scope: invalid.illegal.stray.terraform\n\n  # Blocks: Identifier (StringLit|Identifier)* \"{\" Newline Body \"}\" Newline;\n  #\n  # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#structural-elements\n  blocks:\n    - include: typed-and-named-blocks\n    - include: named-blocks\n    - include: generic-blocks\n\n  typed-and-named-blocks:\n    # Special case for two-label resources,\n    # where the first denotes the type and the second the name.\n    - match: (?=\\b{{terraform_typed_and_named_blocks}}(\\s+{{label}}){2}\\s*\\{)\n      push:\n        - body\n        - block-name-label\n        - block-type-label\n        - block-declaration\n\n  named-blocks:\n    # Special case for two-label resources,\n    # where the first denotes the type and the second the name.\n    - match: (?=\\b{{terraform_named_blocks}}\\s+{{label}}\\s*\\{)\n      push:\n        - body\n        - block-name-label\n        - block-declaration\n\n  generic-blocks:\n    - match: (?=\\b({{identifier}})(\\s+{{label}})*\\s*\\{)\n      push:\n        - body\n        - generic-block-labels\n        - block-declaration\n\n  block-declaration:\n    - match: '{{identifier}}'\n      scope: keyword.declaration.terraform\n      pop: 1\n    - include: else-pop\n\n  block-type-label:\n    - match: \\\"\n      scope: punctuation.definition.string.begin.terraform\n      set: block-type-label-body\n    - match: '{{identifier}}'\n      scope: support.type.terraform\n      pop: 1\n    - include: else-pop\n\n  block-type-label-body:\n    - meta_scope: meta.string.terraform\n    - meta_content_scope: support.type.terraform\n    - match: \\\"\n      scope: punctuation.definition.string.end.terraform\n      pop: 1\n    - include: character-escapes\n\n  block-name-label:\n    - match: \\\"\n      scope: punctuation.definition.string.begin.terraform\n      set: block-name-label-body\n    - match: '{{identifier}}'\n      scope: entity.name.label.terraform\n      pop: 1\n    - include: else-pop\n\n  block-name-label-body:\n    - meta_scope: meta.string.terraform\n    - meta_content_scope: entity.name.label.terraform\n    - match: \\\"\n      scope: punctuation.definition.string.end.terraform\n      pop: 1\n    - include: character-escapes\n\n  generic-block-labels:\n    # Labels probably have a meaning, but we don't know which,\n    # so we just scope them as (un-)quoted strings.\n    - match: \\\"\n      scope: punctuation.definition.string.begin.terraform\n      push: generic-block-label-body\n    - match: '{{identifier}}'\n      scope: string.unquoted.double.terraform\n    - include: else-pop\n\n  generic-block-label-body:\n    - meta_scope: meta.string.terraform string.quoted.double.terraform\n    - match: \\\"\n      scope: punctuation.definition.string.end.terraform\n      pop: 1\n    - include: character-escapes\n\n  body:\n    - meta_content_scope: meta.block.head.terraform\n    - match: \\{\n      scope: punctuation.section.block.begin.terraform\n      set: body-body\n    - include: else-pop\n\n  body-body:\n    - meta_scope: meta.block.body.terraform\n    - match: \\}\n      scope: punctuation.section.block.end.terraform\n      pop: 1\n    - include: main\n\n  else-pop:\n    - match: (?=\\S)\n      pop: 1\n"
  },
  {
    "path": "messages/2.0.0.md",
    "content": "v2.0.0 - 2025-05-11\n-------------------\n\nThe package has been adopted by the SublimeText GitHub org and now lives at\n<https://github.com/SublimeText/Terraform/> for the community to maintain.\nThis is accompanied by many changes\nto bring the syntax definition up to current standards,\ncourtesy of @deathaxe, @FichteFoll, and @michaelblyons.\n\nIn summary, the syntax has been aligned with current standards\nas they have developed over time for the default syntaxes\nand various other third-party syntaxes.\nFor a detailed list of changes,\nplease refer to the full changelog at\n<https://github.com/SublimeText/Terraform/blob/master/CHANGELOG.md>.\n\nNote that this release is only compatible with ST builds 4180 and higher.\nThe old version is still available for installation on older builds\nbut is not maintained anymore.\n"
  },
  {
    "path": "messages.json",
    "content": "{\n    \"2.0.0\": \"messages/2.0.0.md\"\n}\n"
  },
  {
    "path": "preview.tf",
    "content": "#----------------------------------------------------------------------\n# Project API\n#----------------------------------------------------------------------\n\nresource \"aws_instance\" \"api\" {\n\n  count = \"${var.api_count}\"\n\n  connection {\n    user = \"ubuntu\",\n    key_file = \"${var.key_path}\"\n  }\n  provider \"remote-exec\" {\n    inline = [\n      # Run inline commands\n    ]\n  }\n}\n\n/*\n * This is the API public DNS address\n */\noutput \"api-public\" {\n  value = \"${aws_instance.api.public_dns}\"\n}\n\nvariable \"name\" {\n  type = string\n  description = \"describe your variable\"\n}\n\n\n\n"
  },
  {
    "path": "snippets/data.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\ndata \"${1:type}\" \"${2:name}\" {\n\t${3}\n}\n]]></content>\n\t<tabTrigger>data</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>data block</description>\n</snippet>\n"
  },
  {
    "path": "snippets/module.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nmodule \"${1:name}\" {\n\tsource = \"${2}\"\n\t${3}\n}\n]]></content>\n\t<tabTrigger>module</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>module block</description>\n</snippet>\n"
  },
  {
    "path": "snippets/module_github.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nmodule \"${1:name}\" {\n\tsource = \"github.com/${2:owner}/${3:repo}?${4:ref=}\"\n\t${5}\n}\n]]></content>\n\t<tabTrigger>moduleG</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>module (github public)</description>\n</snippet>\n"
  },
  {
    "path": "snippets/module_github_private.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nmodule \"${1:name}\" {\n\tsource = \"git::ssh://git@github.com/${2:owner}/${3:repo}.git${4:?ref=}\"\n\t${5}\n}\n]]></content>\n\t<tabTrigger>moduleGS</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>module (github ssh)</description>\n</snippet>\n"
  },
  {
    "path": "snippets/module_path.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nmodule \"${1:name}\" {\n\tsource = \"${2:./modules/}\"\n\t${3}\n}\n]]></content>\n\t<tabTrigger>moduleP</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>module (path)</description>\n</snippet>\n"
  },
  {
    "path": "snippets/output.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\noutput \"${1:name}\" {\n\tvalue = \"\\${${2}}\"\n}\n]]></content>\n\t<tabTrigger>output</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>output block</description>\n</snippet>\n"
  },
  {
    "path": "snippets/provider.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nprovider \"${1:name}\" {\n\t${2}\n}\n]]></content>\n\t<tabTrigger>provider</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>provider block</description>\n</snippet>\n"
  },
  {
    "path": "snippets/provisioner.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nprovisioner \"${1:name}\" {\n\t${2}\n}\n]]></content>\n    <tabTrigger>provisioner</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>provisioner block</description>\n</snippet>\n"
  },
  {
    "path": "snippets/resource.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nresource \"${1:type}\" \"${2:name}\" {\n\t${3}\n}\n]]></content>\n\t<tabTrigger>resource</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>resource block</description>\n</snippet>\n"
  },
  {
    "path": "snippets/variable_empty.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nvariable \"${1:name}\" {\n\ttype = string\n\t${2:description = \"${3:describe your variable}\"}\n}\n]]></content>\n\t<tabTrigger>variableE</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>variable (empty)</description>\n</snippet>\n"
  },
  {
    "path": "snippets/variable_map.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nvariable \"${1:name}\" {\n\ttype = map\n\t${2:description = \"${3:describe your variable}\"}\n\tdefault = {\n\t\t${4:key1} = \"${5:val1}\"\n\t\t${6:key2} = \"${7:val2}\"\n\t}\n}\n]]></content>\n\t<tabTrigger>variableM</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>variable (map)</description>\n</snippet>\n"
  },
  {
    "path": "snippets/variable_string.sublime-snippet",
    "content": "<snippet>\n\t<content><![CDATA[\nvariable \"${1:name}\" {\n\ttype = string\n\t${2:description = \"${3:describe your variable}\"}\n\tdefault = \"${4:default_value}\"\n}\n]]></content>\n\t<tabTrigger>variableS</tabTrigger>\n\t<scope>source.terraform</scope>\n\t<description>variable (string)</description>\n</snippet>\n"
  },
  {
    "path": "tests/syntax_test_reindent.tf",
    "content": "# SYNTAX TEST reindent-unchanged \"Terraform.sublime-syntax\"\n\nprovider \"name\" {\n  attr1 = {\n    key1 = {\n      key11 = {\n        key111 = 0\n        key112 = [\n          \"0\",\n          \"1\"\n        ]\n      },\n      key12 = [\n        0,\n        1,\n      ],\n      key13 = (\n        var.member\n        + var.other\n      )\n    }\n  }\n\n  attr2 = jsondecode(\n    {\n      \"key1\": {\n        \"key11\": [\n          0,\n          1\n        ],\n        \"key12\": {\n          \"key121\": \"value\",\n          \"key122\": 0\n        }\n      }\n    }\n  )\n}"
  },
  {
    "path": "tests/syntax_test_scope.hcl",
    "content": "# SYNTAX TEST \"HCL.sublime-syntax\"\n\n# Same as normal Terraform syntax, hence nothing special to test here.\n# <- source.hcl\n"
  },
  {
    "path": "tests/syntax_test_scope.tf",
    "content": "# SYNTAX TEST \"Terraform.sublime-syntax\"\n\n/////////////////////////////////////////////////////////////////////\n// INLINE COMMENTS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Start of line inline comments with `#`.\n/////\n\n# inline comment\n# ^ source.terraform comment.line.terraform\n\n/////\n// Start of line inline comments with `//`.\n/////\n\n// foo\n# ^ source.terraform comment.line.terraform\n\n/////\n// Matches at random place in line + punctuation for `#`.\n/////\n\n        # bar\n#     ^ - comment - punctuation\n#       ^ punctuation.definition.comment.terraform\n#       ^^^^^ comment.line.terraform\n\n/////\n// Matches at random place in line + punctuation for `//`.\n/////\n\n    // baz # blah\n# ^ - comment - punctuation\n#   ^^ punctuation.definition.comment.terraform\n#   ^^^^^^^^^^^^^ comment.line.terraform\n\n/////////////////////////////////////////////////////////////////////\n// BLOCK COMMENTS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches for a single line.\n/////\n\n    /* foo */\n# ^ - comment - punctuation\n#   ^^ punctuation.definition.comment.terraform\n#   ^^^^^^^^ comment.block.terraform\n#          ^^ punctuation.definition.comment.terraform\n\n/////\n// Matches over multiple lines.\n/////\n\n    /*\n# ^ - comment - punctuation\n#   ^^ punctuation.definition.comment.terraform\n#   ^^^^ comment.block.terraform\n\n  foo\n# ^^^^ comment.block.terraform\n\n    */\n# ^^^^ comment.block.terraform\n#   ^^ punctuation.definition.comment.terraform\n\n/////\n// Matches inline comments after block ends.\n/////\n\n     /* comment */    // inline\n# ^ - comment - punctuation\n#    ^^ punctuation.definition.comment.terraform\n#    ^^^^^^^^^^^^ comment.block.terraform\n#               ^^ punctuation.definition.comment.terraform\n#                 ^^^ - comment - punctuation\n#                     ^^ punctuation.definition.comment.terraform\n#                     ^^^^^^^^ comment.line.terraform\n\n/////////////////////////////////////////////////////////////////////\n// LANGUAGE CONSTANTS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches `true`.\n/////\n\n    true\n# ^ - constant\n#   ^^^^ constant.language.boolean.true.terraform\n#         ^ - constant\n\n/////\n// Matches `false`.\n/////\n\n    false\n# ^ - constant\n#   ^^^^^ constant.language.boolean.false.terraform\n#         ^ - constant\n\n\n/////\n// Matches `null`.\n/////\n\n    null\n# ^ - constant\n#   ^^^^ constant.language.null.terraform\n#         ^ - constant\n\n/////////////////////////////////////////////////////////////////////\n// INTEGER CONSTANTS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches integers.\n/////\n\n    444\n#  ^ - meta.number - constant\n#   ^^^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#      ^ - meta.number - constant\n\n/////\n// Matches zero.\n/////\n\n      0\n#    ^ - meta.number - constant\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#      ^ - meta.number - constant\n\n/////\n// Matches one.\n/////\n\n      1\n#    ^ - meta.number - constant\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#      ^ - meta.number - constant\n\n/////\n// Matches large integers.\n/////\n\n      26345645634561\n#    ^ - meta.number - constant\n#     ^^^^^^^^^^^^^^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                   ^ - meta.number - constant\n\n/////\n// Ignores integers inside identifiers.\n/////\n\n    aws_route53_zone.main.zone_id\n#   ^^^^^^^^^^^^^^^^ - numeric - constant\n#                   ^ punctuation.accessor.dot.terraform\n#                    ^^^^ variable.other.member.terraform\n#                        ^ punctuation.accessor.dot.terraform\n#                         ^^^^^^^ variable.other.member.terraform\n\n/////////////////////////////////////////////////////////////////////\n// FLOATING-POINT CONSTANTS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches floating-point numbers.\n/////\n\n      1.2\n#    ^ - meta.number - constant\n#     ^^^ meta.number.float.decimal.terraform constant.numeric.value.terraform\n#      ^ punctuation.separator.decimal.terraform\n#        ^ - meta.number - constant\n\n/////\n// Matches large floating-point numbers.\n/////\n\n      61.28888888888\n#    ^ - meta.number - constant\n#     ^^^^^^^^^^^^^^ meta.number.float.decimal.terraform constant.numeric.value.terraform\n#       ^ punctuation.separator.decimal.terraform\n#                   ^ - meta.number - constant\n\n/////\n// Matches integers with exponents.\n/////\n\n      1e12\n#    ^ - meta.number - constant\n#     ^^^^ meta.number.float.decimal.terraform constant.numeric.value.terraform\n#         ^ - meta.number - constant\n\n/////\n// Matches floats with exponents.\n/////\n\n      1.4E12\n#    ^ - meta.number - constant\n#     ^^^^^^ meta.number.float.decimal.terraform constant.numeric.value.terraform\n#      ^ punctuation.separator.decimal.terraform\n#           ^ - meta.number - constant\n\n/////\n// Matches floats with postive signed exponents.\n/////\n\n      1.4e+12\n#    ^ - meta.number - constant\n#     ^^^^^^^ meta.number.float.decimal.terraform constant.numeric.value.terraform\n#      ^ punctuation.separator.decimal.terraform\n#            ^ - meta.number - constant\n\n/////\n// Matches floats with negative signed exponents.\n/////\n\n      1.4E-12\n#    ^ - meta.number - constant\n#     ^^^^^^^ meta.number.float.decimal.terraform constant.numeric.value.terraform\n#      ^ punctuation.separator.decimal.terraform\n#            ^ - meta.number - constant\n\n/////////////////////////////////////////////////////////////////////\n// STRINGS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches punctuation and assigns meta_scope.\n/////\n\n      \"a string\"\n#   ^ - punctuation - string\n#     ^ punctuation.definition.string.begin.terraform\n#     ^^^^^^^^^^ string.quoted.double.terraform\n#              ^ punctuation.definition.string.end.terraform\n#                 ^ - punctuation - string\n\n/////\n// Matches character escapes.\n/////\n\n      \"a \\n b \\r c \\t d \\\" e \\udead f \\udeadbeef\"\n#   ^ - punctuation - string\n#     ^ punctuation.definition.string.begin.terraform\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform\n#        ^^ constant.character.escape.terraform\n#             ^^ constant.character.escape.terraform\n#                  ^^ constant.character.escape.terraform\n#                       ^^ constant.character.escape.terraform\n#                            ^^^^^ constant.character.escape.terraform\n#                                     ^^^^^^^^^^ constant.character.escape.terraform\n#                                               ^ punctuation.definition.string.end.terraform\n\n\n/////\n// Matches IPs and CIDR\n/////\n\n      \"1.2.3.4\"\n#     ^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v4.terraform\n#             ^ punctuation.definition.string.end.terraform\n\n      \"1.2.3.4/32\"\n#     ^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v4.terraform\n#             ^ punctuation.separator.terraform\n#              ^^ constant.other.range.terraform\n#                ^ punctuation.definition.string.end.terraform\n\n      \"1.2.3.4:8080\"\n#     ^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v4.terraform\n#             ^ punctuation.separator.terraform\n#              ^^^^ constant.other.port.terraform\n#                  ^ punctuation.definition.string.end.terraform\n\n      \"1.2.3.4/33\"\n#     ^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^ - constant - punctuation\n#                ^ punctuation.definition.string.end.terraform\n\n      \"256.2.3.4\"\n#     ^^^^^^^^^^^ - constant\n\n      \"::1\"\n#     ^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n#         ^ punctuation.definition.string.end.terraform\n\n      \"deed\"\n#     ^^^^^^ meta.string.terraform string.quoted.double.terraform - constant\n#     ^ punctuation.definition.string.begin.terraform\n#          ^ punctuation.definition.string.end.terraform\n\n      \"deed:10:10\"\n#     ^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform - constant\n#     ^ punctuation.definition.string.begin.terraform\n#                ^ punctuation.definition.string.end.terraform\n\n      \"1:2:3:4:5:6:7:8\"\n#     ^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n#                     ^ punctuation.definition.string.end.terraform\n\n      \"1:2:3:4:5:6:7:8:8080\"\n#     ^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^^^^^^ - constant - punctuation\n#                          ^ punctuation.definition.string.end.terraform\n\n      \"1:2:3:4:5:6:7:8/128\"\n#     ^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n#                     ^ punctuation.separator.terraform\n#                      ^^^ constant.other.range.terraform\n#                         ^ punctuation.definition.string.end.terraform\n\n      \"1:2:3:4:5:6:7:8/129\"\n#     ^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^^^^^ - constant - punctuation\n#                         ^ punctuation.definition.string.end.terraform\n\n      \"[1:2:3:4:5:6:7:8]/128\"\n#     ^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n#      ^ punctuation.definition.constant.begin.terraform\n#                      ^ punctuation.definition.constant.end.terraform\n#                       ^ punctuation.separator.terraform\n#                        ^^^ constant.other.range.terraform\n#                           ^ punctuation.definition.string.end.terraform\n\n      \"[1:2:3:4:5:6:7:8]:8080\"\n#     ^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v6.terraform\n#      ^ punctuation.definition.constant.begin.terraform\n#                      ^ punctuation.definition.constant.end.terraform\n#                       ^ punctuation.separator.terraform\n#                        ^^^^ constant.other.port.terraform\n#                            ^ punctuation.definition.string.end.terraform\n\n      \"[1:2:3:4:5:6:7:8]/129\"\n#     ^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#      ^^^^^^^^^^^^^^^^^^^^^ - constant - punctuation\n\n/////\n// Unclosed strings\n/////\n\n  \"\n# ^ meta.string.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#  ^ invalid.illegal.unclosed-string.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Identifiers\n/////////////////////////////////////////////////////////////////////\n\n      this_is_an_identifier\n#     ^^^^^^^^^^^^^^^^^^^^^ variable.other.readwrite.terraform\n\n      identifier.member_access\n#     ^^^^^^^^^^ variable.other.readwrite.terraform\n#               ^ punctuation.accessor.dot.terraform\n#                ^^^^^^^^^^^^^ variable.other.member.terraform\n\n      identifier-with-hyphens\n#     ^^^^^^^^^^^^^^^^^^^^^^^ variable.other.readwrite.terraform\n\n      __EOF__\n#     ^^^^^^^ variable.other.readwrite.terraform\n\n      identifier.\n// comment\n# <- comment\n\n/////////////////////////////////////////////////////////////////////\n// STRING INTERPOLATION\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Correct scopes during interpolation.\n/////\n\n      \"some ${interpolation} string\"\n#   ^ - punctuation - string\n#     ^ punctuation.definition.string.begin.terraform\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform\n#      ^^^^^ string.quoted.double.terraform\n#           ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#             ^^^^^^^^^^^^^^ meta.interpolation.terraform\n#              ^^^^^^^^^^^^ source.terraform\n#                          ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                            ^^^^^^^ string.quoted.double.terraform\n#                                  ^ punctuation.definition.string.end.terraform\n#                                   ^ - punctuation - string\n\n/////\n// Matches left-trim and right-trim.\n/////\n\n      \"%{~ fff ~}\"\n#     ^^^^^^^^^^^^ meta.string.terraform\n#      ^^^^^^^^^^ meta.interpolation.terraform\n#     ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#      ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#        ^ meta.interpolation.terraform keyword.operator.template.trim.left.terraform\n#         ^^^^^ source.terraform\n#              ^ keyword.operator.template.trim.right.terraform\n#               ^ punctuation.section.interpolation.end.terraform\n#                ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Matches operators\n/////\n\n    \"${ something ? true : false }\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#    ^^ punctuation.section.interpolation.begin.terraform\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform\n#      ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.terraform\n#                 ^ keyword.operator.ternary.terraform\n#                   ^^^^ meta.interpolation.terraform constant.language.boolean.true.terraform\n#                        ^ meta.interpolation.terraform keyword.operator.ternary.terraform\n#                          ^^^^^ meta.interpolation.terraform constant.language.boolean.false.terraform\n#                                ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                 ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Dot-access attributes in string interpolation\n/////\n\n    \"hello ${aws_instance.ubuntu}\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#   ^^^^^^^ string.quoted.double.terraform\n#          ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#            ^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform\n#                        ^ meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                         ^^^^^^ meta.interpolation.terraform variable.other.member.terraform\n#                               ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Handles function calls\n/////\n\n      \"${formatdate(\"DD MMM YYYY hh:mm ZZZ\", \"2018-01-02T23:12:01Z\")}\"\n#     ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#      ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#        ^^^^^^^^^^ meta.interpolation.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                  ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                   ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                          ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                            ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                             ^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                                  ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                                                   ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                                                    ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Handles nested function calls.\n/////\n\n    id = \"db-final-snapshot-${md5(timestamp())}\"\n#   ^^ variable.declaration.terraform variable.other.readwrite.terraform\n#      ^ keyword.operator.assignment.terraform\n#        ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#         ^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform\n#                           ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                             ^^^ meta.interpolation.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                                 ^^^^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                          ^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                                           ^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                            ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                             ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                              ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Includes objects.\n////\n\n    \"something ${{test = 3}}\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#    ^^^^^^^^^^ string.quoted.double.terraform\n#              ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                ^ meta.interpolation.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#                 ^^^^ meta.interpolation.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                      ^ meta.interpolation.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                        ^ meta.interpolation.terraform source.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                         ^ meta.interpolation.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                          ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                           ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Includes tuples.\n////\n\n    \"something ${[1, 2, 3]}\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#    ^^^^^^^^^^ string.quoted.double.terraform\n#              ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                ^ meta.interpolation.terraform punctuation.section.brackets.begin.terraform\n#                 ^ meta.interpolation.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.interpolation.terraform punctuation.separator.terraform\n#                    ^ meta.interpolation.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                     ^ meta.interpolation.terraform punctuation.separator.terraform\n#                       ^ meta.interpolation.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                        ^ meta.interpolation.terraform punctuation.section.brackets.end.terraform\n#                         ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                          ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Includes named values.\n/////\n\n    \"${var.something}\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#    ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#      ^^^ meta.interpolation.terraform variable.language.terraform\n#         ^ meta.interpolation.terraform punctuation.accessor.dot.terraform\n#          ^^^^^^^^^ meta.interpolation.terraform variable.other.member.terraform\n#                   ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                    ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////\n// Handles regexes (various punctuation).\n/////\n\n    records = [\"${replace(\"hostname.domain.com:1234\", \"/(.*):[0-9]{0,26}/\", \"$1\")}\"]\n#   ^^^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#           ^ keyword.operator.assignment.terraform\n#             ^ punctuation.section.brackets.begin.terraform\n#              ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                 ^^^^^^^ meta.interpolation.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                        ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                         ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                          ^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                  ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                   ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                                     ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                      ^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                                        ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                                         ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                                                           ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                                            ^^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                                              ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                                               ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                                                                ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                                                                 ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                                                  ^ punctuation.section.brackets.end.terraform\n#                                                                                   ^ - meta - string - variable - punctuation\n\n/////\n// Handles nested interpolation.\n/////\n\n    \"${file(\"${path.module}/text_files/ecs_app\")}\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#    ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#      ^^^^ meta.interpolation.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#              ^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.interpolation.terraform variable.language.terraform\n#                  ^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                   ^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.interpolation.terraform variable.other.member.terraform\n#                         ^ meta.interpolation.terraform meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                          ^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                             ^ meta.interpolation.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                              ^ meta.interpolation.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                               ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                                ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Template If Directives\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches if/endif directives.\n/////\n\n      \"${ if name == \"Mary\" }${name}${ endif ~}\"\n#    ^ - string - punctuation\n#     ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#      ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform\n#         ^^ meta.interpolation.terraform keyword.control.conditional.if.terraform\n#                 ^^ meta.interpolation.terraform keyword.operator.comparison.terraform\n#                    ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^^^^^ source.terraform meta.interpolation.terraform string.quoted.double.terraform\n#                         ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                           ^ punctuation.section.interpolation.end.terraform\n#                            ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                  ^ punctuation.section.interpolation.end.terraform\n#                                   ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                      ^^^^^ meta.interpolation.terraform keyword.control.conditional.end.terraform\n#                                            ^ meta.interpolation.terraform keyword.operator.template.trim.right.terraform\n#                                             ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                              ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                               ^ - string - punctuation\n\n/////\n// Matches if/else/endif directives.\n/////\n\n      \"%{ if name == \"Mary\" }${name}%{ else }${ \"Mary\" }%{ endif ~}\"\n#    ^ - string - punctuation\n#     ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#      ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform\n#         ^^ meta.interpolation.terraform keyword.control.conditional.if.terraform\n#                 ^^ meta.interpolation.terraform keyword.operator.comparison.terraform\n#                    ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^^^^^ source.terraform meta.interpolation.terraform string.quoted.double.terraform\n#                         ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                           ^ punctuation.section.interpolation.end.terraform\n#                            ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                  ^ punctuation.section.interpolation.end.terraform\n#                                   ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                      ^^^^ meta.interpolation.terraform keyword.control.conditional.else.terraform\n#                                           ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                            ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                               ^ meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                ^^^^^ meta.interpolation.terraform string.quoted.double.terraform\n#                                                      ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                                      ^ punctuation.section.interpolation.end.terraform\n#                                                       ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                                          ^^^^^ meta.interpolation.terraform keyword.control.conditional.end.terraform\n#                                                                ^ meta.interpolation.terraform keyword.operator.template.trim.right.terraform\n#                                                                 ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                                                  ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                                   ^ - string - punctuation\n\n/////\n// Matches for/in/endfor directives.\n/////\n\n      \"%{ for name in var.names ~}${name}%{ endfor ~}\"\n#   ^ - string - punctuation\n#     ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#      ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#         ^^^ keyword.control.loop.for.terraform\n#      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform\n#                  ^^ keyword.control.loop.in.terraform\n#                     ^^^ meta.interpolation.terraform variable.language.terraform\n#                        ^ meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                         ^^^^^ meta.interpolation.terraform variable.other.member.terraform\n#                               ^ keyword.operator.template.trim.right.terraform\n#                                ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                 ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                       ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                        ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                                           ^^^^^^ keyword.control.loop.end.terraform\n#                                                  ^ meta.interpolation.terraform keyword.operator.template.trim.right.terraform\n#                                                   ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                                    ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                     ^ - string - punctuation\n\n/////////////////////////////////////////////////////////////////////\n// TEMPLATE LITERALS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Template literal using `$` character\n/////\n\n      \"some $${interpolation} string\"\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#           ^^^ constant.character.escape.terraform\n#                                   ^ punctuation.definition.string.end.terraform\n\n/////\n// Template literal using `%` character\n/////\n\n      \"some %%{interpolation} string\"\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#     ^ punctuation.definition.string.begin.terraform\n#           ^^^ constant.character.escape.terraform\n#                                   ^ punctuation.definition.string.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Operators\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Comparison\n/////\n\n    a == b\n#   ^ - keyword - operator\n#     ^^ keyword.operator.comparison.terraform\n#         ^ - keyword - operator\n\n    a != b\n#   ^ - keyword - operator\n#     ^^ keyword.operator.comparison.terraform\n#         ^ - keyword - operator\n\n    a < b\n#    ^ - keyword - operator\n#     ^ keyword.operator.comparison.terraform\n#      ^ - keyword - operator\n\n    a <= b\n#    ^ - keyword - operator\n#     ^^ keyword.operator.comparison.terraform\n#       ^ - keyword - operator\n\n    a > b\n#    ^ - keyword - operator\n#     ^ keyword.operator.comparison.terraform\n#      ^ - keyword - operator\n\n    a >= b\n#    ^ - keyword - operator\n#     ^^ keyword.operator.comparison.terraform\n#       ^ - keyword - operator\n\n/////\n// Arithmetic\n/////\n\n    a + b\n#    ^ - keyword - operator\n#     ^ keyword.operator.arithmetic.terraform\n#      ^ - keyword - operator\n\n    a - b\n#    ^ - keyword - operator\n#     ^ keyword.operator.arithmetic.terraform\n#      ^ - keyword - operator\n\n    a * b\n#    ^ - keyword - operator\n#     ^ keyword.operator.arithmetic.terraform\n#      ^ - keyword - operator\n\n    a / b\n#    ^ - keyword - operator\n#     ^ keyword.operator.arithmetic.terraform\n#      ^ - keyword - operator\n\n    a % b\n#    ^ - keyword - operator\n#     ^ keyword.operator.arithmetic.terraform\n#      ^ - keyword - operator\n\n    - a\n#  ^ - keyword - operator\n#   ^ keyword.operator.arithmetic.terraform\n#    ^ - keyword - operator\n\n/////\n// Logic\n/////\n\n    a && b\n#   ^^ - keyword - operator\n#     ^^ keyword.operator.logical.terraform\n#       ^^ - keyword - operator\n\n    a || b\n#   ^^ - keyword - operator\n#     ^^ keyword.operator.logical.terraform\n#       ^^ - keyword - operator\n\n    !a\n# ^^ - keyword - operator\n#   ^ keyword.operator.logical.terraform\n#    ^^ - keyword - operator\n\n/////\n// Conditional\n/////\n\n    length(some_list) > 0 ? some_list[0] : default\n#   ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^^^^^^^^^ meta.function-call.arguments.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                     ^ keyword.operator.comparison.terraform\n#                       ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                         ^ keyword.operator.ternary.terraform\n#                                    ^ punctuation.section.brackets.begin.terraform\n#                                     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                      ^ punctuation.section.brackets.end.terraform\n#                                        ^ keyword.operator.ternary.terraform\n\n/////\n// Ellipsis\n/////\n\n    hhh([55, 2453, 2]...)\n#   ^^^ meta.function-call.identifier.terraform variable.function.terraform\n#      ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#       ^ punctuation.section.brackets.begin.terraform\n#        ^^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#          ^ punctuation.separator.terraform\n#            ^^^^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                ^ punctuation.separator.terraform\n#                  ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                   ^ punctuation.section.brackets.end.terraform\n#                    ^^^ keyword.operator.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Brackets: Index Operations and Arrays\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Index Operations\n/////\n\n    thing[1]\n#       ^ - punctuation\n#        ^ punctuation.section.brackets.begin.terraform\n#         ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#          ^ punctuation.section.brackets.end.terraform\n#           ^ - punctuation\n\n/////\n// Arrays of literals\n/////\n\n    [\"a\", \"b\", \"c\"]\n#   ^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^ punctuation.definition.string.begin.terraform\n#    ^^^ string.quoted.double.terraform\n#      ^ punctuation.definition.string.end.terraform\n#       ^ punctuation.separator.terraform\n#         ^ punctuation.definition.string.begin.terraform\n#         ^^^ string.quoted.double.terraform\n#           ^ punctuation.definition.string.end.terraform\n#            ^ punctuation.separator.terraform\n#              ^ punctuation.definition.string.begin.terraform\n#              ^^^ string.quoted.double.terraform\n#                ^ punctuation.definition.string.end.terraform\n#                 ^ punctuation.section.brackets.end.terraform\n\n/////\n// Allows inline comments\n/////\n\n    [1, /* inline */ 2]\n#   ^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#     ^ punctuation.separator.terraform\n#       ^^ punctuation.definition.comment.terraform\n#       ^^^^^^^^^^^^ comment.block.terraform\n#                 ^^ punctuation.definition.comment.terraform\n#                    ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                     ^ punctuation.section.brackets.end.terraform\n\n/////\n// Allows expression over multiple lines\n/////\n\n    [\n#   ^ punctuation.section.brackets.begin.terraform\n      1,\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#      ^ punctuation.separator.terraform\n      2\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n    ]\n#   ^ punctuation.section.brackets.end.terraform\n\n/////\n// Allows operators\n/////\n\n    [ 1 + 2 ]\n#   ^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#       ^ keyword.operator.arithmetic.terraform\n#         ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ punctuation.section.brackets.end.terraform\n\n/////\n// Splat operator\n/////\n\n    tuple[*].foo.bar[0]\n#        ^ punctuation.section.brackets.begin.terraform\n#         ^ punctuation.section.brackets.end.terraform keyword.operator.splat.terraform\n#          ^ punctuation.section.brackets.end.terraform\n#           ^ punctuation.accessor.dot.terraform\n#            ^^^ variable.other.member.terraform\n#               ^ punctuation.accessor.dot.terraform\n#                ^^^ variable.other.member.terraform\n#                   ^ punctuation.section.brackets.begin.terraform\n#                    ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                     ^ punctuation.section.brackets.end.terraform\n\n/////\n// Handle nested arrays\n/////\n\n    counts = [\n#   ^^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#          ^ keyword.operator.assignment.terraform\n#            ^ punctuation.section.brackets.begin.terraform\n      [ 1, 2],\n#     ^ punctuation.section.brackets.begin.terraform\n#       ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#        ^ punctuation.separator.terraform\n#          ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ punctuation.section.brackets.end.terraform\n#            ^ punctuation.separator.terraform\n      [ 6, 7]\n#     ^ punctuation.section.brackets.begin.terraform\n#       ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#        ^ punctuation.separator.terraform\n#          ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ punctuation.section.brackets.end.terraform\n    ]\n#   ^ punctuation.section.brackets.end.terraform\n#    ^ - punctuation\n\n/////\n// Attribute-access inside arrays\n/////\n\n    [ aws_instance.ubuntu, aws_instance.freebsd ]\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#                 ^ punctuation.accessor.dot.terraform\n#                  ^^^^^^ variable.other.member.terraform\n#                        ^ punctuation.separator.terraform\n#                                      ^ punctuation.accessor.dot.terraform\n#                                       ^^^^^^^ variable.other.member.terraform\n#                                               ^ punctuation.section.brackets.end.terraform\n\n/////\n// Includes functions.\n/////\n\n    [ upper(\"ggh\") ]\n#   ^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                  ^ punctuation.section.brackets.end.terraform\n\n/////\n// Include objects.\n/////\n\n    [{a = 1}, {g = 2}]\n#   ^ meta.brackets.terraform - meta.braces\n#    ^^^^^^^ meta.brackets.terraform meta.braces.terraform\n#           ^^ meta.brackets.terraform - meta.braces\n#             ^^^^^^^ meta.brackets.terraform meta.braces.terraform\n#                    ^ meta.brackets.terraform - meta.braces\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n#     ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#       ^ meta.braces.terraform keyword.operator.assignment.terraform\n#         ^ meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#          ^ meta.braces.terraform punctuation.section.braces.end.terraform\n#           ^ punctuation.separator.terraform\n#             ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n#              ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                ^ meta.braces.terraform keyword.operator.assignment.terraform\n#                  ^ meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                   ^ meta.braces.terraform punctuation.section.braces.end.terraform\n#                    ^ punctuation.section.brackets.end.terraform\n\n/////\n// Includes named values\n/////\n\n    [local.thing1, local.thing2]\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^^^ variable.language.terraform\n#         ^ punctuation.accessor.dot.terraform\n#          ^^^^^^ variable.other.member.terraform\n#                ^ punctuation.separator.terraform\n#                  ^^^^^ variable.language.terraform\n#                       ^ punctuation.accessor.dot.terraform\n#                        ^^^^^^ variable.other.member.terraform\n#                              ^ punctuation.section.brackets.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Collections: Objects\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Key/value pairs separated by newlines.\n/////\n\n    {\n#   ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n      name = \"John\"\n#     ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#          ^ meta.braces.terraform keyword.operator.assignment.terraform\n#            ^ meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^^ meta.braces.terraform string.quoted.double.terraform\n      age = 52\n#     ^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#         ^ meta.braces.terraform keyword.operator.assignment.terraform\n#           ^^ meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n    }\n#   ^ meta.braces.terraform punctuation.section.braces.end.terraform\n\n/////\n// Key/value pairs separated by commas.\n/////\n\n    {name = \"John\", age = 52}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#    ^^^^ meta.mapping.key.terraform string.unquoted.terraform\n#         ^ keyword.operator.assignment.terraform\n#           ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^^ string.quoted.double.terraform\n#                 ^ punctuation.separator.terraform\n#                   ^^^ meta.mapping.key.terraform string.unquoted.terraform\n#                           ^ punctuation.section.braces.end.terraform\n\n/////\n// Allows operators in key values.\n/////\n\n    { name = 1 + 1 }\n#   ^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#     ^^^^ meta.mapping.key.terraform string.unquoted.terraform\n#          ^ keyword.operator.assignment.terraform\n#            ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#              ^ keyword.operator.arithmetic.terraform\n#                ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ punctuation.section.braces.end.terraform\n#                   ^ - meta\n\n/////\n// Allows tuples as key values.\n/////\n\n    { list = [ 1, 2, 3 ]}\n#   ^^^^^^^^^ meta.braces.terraform - meta.brackets\n#            ^^^^^^^^^^^ meta.braces.terraform meta.brackets.terraform\n#                       ^ meta.braces.terraform - meta.brackets\n#   ^ punctuation.section.braces.begin.terraform\n#     ^^^^ meta.mapping.key.terraform string.unquoted.terraform\n#          ^ keyword.operator.assignment.terraform\n#            ^ punctuation.section.brackets.begin.terraform\n#              ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ punctuation.separator.terraform\n#                 ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ punctuation.separator.terraform\n#                    ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                      ^ punctuation.section.brackets.end.terraform\n#                       ^ punctuation.section.braces.end.terraform\n#                        ^ - meta\n\n/////\n// Allows function calls as values.\n/////\n\n    {\n#   ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n      a = upper(\"l\"),\n#     ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#       ^ meta.braces.terraform keyword.operator.assignment.terraform\n#         ^^^^^ meta.braces.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.braces.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.braces.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^ meta.braces.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.braces.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                   ^ meta.braces.terraform punctuation.separator.terraform\n    }\n#   ^ meta.braces.terraform punctuation.section.braces.end.terraform\n\n/////\n// Allows nested collection literals.\n/////\n\n    {\n#   ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n      obj1 = {\n#     ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#          ^ meta.braces.terraform keyword.operator.assignment.terraform\n#            ^ meta.braces.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n        obj2 = {\n#       ^^^^ meta.braces.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#            ^ meta.braces.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#              ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n          value = 5\n#         ^^^^^ meta.braces.terraform meta.braces.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#               ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                 ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n        }\n#       ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n      }\n#     ^ meta.braces.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n    }\n#   ^ meta.braces.terraform punctuation.section.braces.end.terraform\n#    ^ - meta\n\n/////\n// Allows attribute-access as rvalue, including named values.\n/////\n\n    { lvalue = var.rvalue }\n#   ^^^^^^^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#     ^^^^^^ meta.mapping.key.terraform string.unquoted.terraform\n#            ^ keyword.operator.assignment.terraform\n#              ^^^ variable.language.terraform\n#                 ^ punctuation.accessor.dot.terraform\n#                  ^^^^^^ variable.other.member.terraform\n#                         ^ punctuation.section.braces.end.terraform\n#                          ^ - meta\n\n/////\n// Allows strings as keys.\n/////\n\n    {\"gggg\" = \"gggg\"}\n#   ^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#    ^ meta.mapping.key.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#     ^^^^ meta.mapping.key.terraform string.quoted.double.terraform\n#         ^ meta.mapping.key.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#           ^ keyword.operator.assignment.terraform\n#             ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#              ^^^^ string.quoted.double.terraform\n#                  ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                   ^ punctuation.section.braces.end.terraform\n\n/////\n// Allows expressions + operators as keys.\n/////\n\n    {(1 + 2) = \"gggg\"}\n#   ^ meta.braces.terraform - meta.parens\n#    ^^^^^^^ meta.braces.terraform meta.mapping.key.terraform meta.parens.terraform\n#           ^^^^^^^^^^ meta.braces.terraform - meta.parens\n#   ^ punctuation.section.braces.begin.terraform\n#    ^ punctuation.section.parens.begin.terraform\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#       ^ keyword.operator.arithmetic.terraform\n#         ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#          ^ punctuation.section.parens.end.terraform\n#            ^ keyword.operator.assignment.terraform\n#              ^^^^^^ string.quoted.double.terraform\n#                    ^ punctuation.section.braces.end.terraform\n\n/////\n// Allows function calls as keys.\n/////\n\n    {(func()) = 1}\n#   ^ meta.braces.terraform - meta.parens\n#    ^^^^^^^^ meta.braces.terraform meta.mapping.key.terraform meta.parens.terraform\n#            ^^^^^ meta.braces.terraform - meta.parens\n#   ^ punctuation.section.braces.begin.terraform\n#    ^ punctuation.section.parens.begin.terraform\n#     ^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#           ^ punctuation.section.parens.end.terraform\n#             ^ keyword.operator.assignment.terraform\n#               ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                ^ punctuation.section.braces.end.terraform\n\n/////\n// Allows attribute-access as keys.\n////\n\n    {(var.path) = 1}\n#   ^ meta.braces.terraform - meta.parens\n#    ^^^^^^^^^^ meta.braces.terraform meta.mapping.key.terraform meta.parens.terraform\n#              ^^^^^ meta.braces.terraform - meta.parens\n#   ^ punctuation.section.braces.begin.terraform\n#    ^ punctuation.section.parens.begin.terraform\n#     ^^^ variable.language.terraform\n#        ^ punctuation.accessor.dot.terraform\n#         ^^^^ variable.other.member.terraform\n#             ^ punctuation.section.parens.end.terraform\n#               ^ keyword.operator.assignment.terraform\n#                 ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ punctuation.section.braces.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Attribute Access\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches dot-access\n/////\n\n    aws_instance.ubuntu[*].private_dns\n#               ^ punctuation.accessor.dot.terraform\n#                ^^^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.brackets.begin.terraform\n#                       ^ punctuation.section.brackets.end.terraform keyword.operator.splat.terraform\n#                        ^ punctuation.section.brackets.end.terraform\n#                         ^ punctuation.accessor.dot.terraform\n#                          ^^^^^^^^^^^ variable.other.member.terraform\n#                                     ^ - variable - punctuation\n\n/////\n// Ignores dot-access in string literals\n/////\n\n    \"aws_instance.ubuntu\"\n#   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^ - variable\n#   ^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform\n\n/////\n// Matches inside for-expressions\n/////\n\n   [for l in var.letters: upper(l)]\n#  ^ punctuation.section.brackets.begin.terraform\n#   ^^^ keyword.control.loop.for.terraform\n#       ^ variable.other.readwrite.terraform\n#         ^^ keyword.operator.iteration.in.terraform\n#            ^^^ variable.language.terraform\n#               ^ punctuation.accessor.dot.terraform\n#                ^^^^^^^ variable.other.member.terraform\n#                       ^ punctuation.section.block.loop.for.terraform\n#                         ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                               ^ meta.function-call.arguments.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                 ^ punctuation.section.brackets.end.terraform\n\n/////\n// Attribute-only splat\n/////\n\n    tuple.*.foo.bar[0]\n#        ^ punctuation.accessor.dot.terraform\n#         ^ keyword.operator.splat.terraform\n#          ^ punctuation.accessor.dot.terraform\n#           ^^^ variable.other.member.terraform\n#              ^ punctuation.accessor.dot.terraform\n#               ^^^ variable.other.member.terraform\n#                  ^ punctuation.section.brackets.begin.terraform\n#                   ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                    ^ punctuation.section.brackets.end.terraform\n\n/////\n// Matches subscript indexes\n/////\n\n    aws_route53_zone.project.name_servers.1\n#                   ^ punctuation.accessor.dot.terraform\n#                    ^^^^^^^ variable.other.member.terraform\n#                           ^ punctuation.accessor.dot.terraform\n#                            ^^^^^^^^^^^^ variable.other.member.terraform\n#                                        ^ punctuation.accessor.dot.terraform\n#                                         ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                          ^ - constant - punctuation - variable\n\n/////////////////////////////////////////////////////////////////////\n// Attribute Definition\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Basic definition\n/////\n\n    attribute = \"string\"\n#   ^^^^^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#             ^ keyword.operator.assignment.terraform\n#               ^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#               ^ punctuation.definition.string.begin.terraform\n#                      ^ punctuation.definition.string.end.terraform\n\n    provider = google-beta.impersonated\n#   ^^^^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#            ^ keyword.operator.assignment.terraform\n#              ^^^^^^^^^^^ variable.other.readwrite.terraform\n#                         ^ punctuation.accessor.dot.terraform\n#                          ^^^^^^^^^^^^ variable.other.member.terraform\n\n\n/////\n// Meta-arguments\n////\n\n    for_each = toset([])\n#   ^^^^^^^^ keyword.control.loop.for.terraform\n#            ^ keyword.operator.assignment.terraform\n#              ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                   ^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#                   ^ punctuation.section.parens.begin.terraform\n#                    ^ punctuation.section.brackets.begin.terraform\n#                     ^ punctuation.section.brackets.end.terraform\n#                      ^ punctuation.section.parens.end.terraform\n\n    count = length(var.availability_zones)\n#   ^^^^^ variable.declaration.terraform keyword.control.conditional.terraform\n#         ^ keyword.operator.assignment.terraform\n#           ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#                 ^ punctuation.section.parens.begin.terraform\n#                  ^^^ variable.language.terraform\n#                     ^ punctuation.accessor.dot.terraform\n#                      ^^^^^^^^^^^^^^^^^^ variable.other.member.terraform\n#                                        ^ punctuation.section.parens.end.terraform\n\n/////\n// Populate an attribute from a variable value\n/////\n\n    (foo) = \"baz\"\n#   ^ punctuation.section.parens.begin.terraform\n#    ^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#       ^ punctuation.section.parens.end.terraform\n#         ^ keyword.operator.assignment.terraform\n#           ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#           ^^^^^ string.quoted.double.terraform\n#               ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Function Calls\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Basic call.\n/////\n\n    thing(l)\n#   ^^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^ meta.function-call.arguments.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Matches parameters, attribute-access, literals, operators, commas.\n/////\n\n    cidrthingy(aws_vpc.main.cidr_block, 4, count.index+1)\n#   ^^^^^^^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#             ^ punctuation.section.parens.begin.terraform\n#                     ^ punctuation.accessor.dot.terraform\n#                      ^^^^ variable.other.member.terraform\n#                          ^ punctuation.accessor.dot.terraform\n#                           ^^^^^^^^^^ variable.other.member.terraform\n#                                     ^ punctuation.separator.terraform\n#                                       ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                        ^ punctuation.separator.terraform\n#                                          ^^^^^ variable.language.terraform\n#                                               ^ punctuation.accessor.dot.terraform\n#                                                ^^^^^ variable.other.member.terraform\n#                                                     ^ keyword.operator.arithmetic.terraform\n#                                                      ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                                       ^ punctuation.section.parens.end.terraform\n#                                                        ^ - meta - function-call - variable\n\n/////\n// Matches arrays and splat as parameters.\n/////\n\n      y6y([55, 2453, 2]..., [55555555])\n#     ^^^ meta.function-call.identifier.terraform variable.function.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#          ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#              ^^^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                    ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                      ^^^ meta.function-call.arguments.terraform keyword.operator.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                           ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                            ^^^^^^^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                    ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Matches objects as parameters.\n/////\n\n    some({a = 1, b = \"2\"})\n#   ^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#       ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#        ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#         ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#           ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#             ^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#              ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                  ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                    ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                     ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Nested function calls.\n/////\n\n    func(thing(yep(1)))\n#   ^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#       ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#        ^^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform variable.function.terraform\n#             ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.function-call.identifier.terraform variable.function.terraform\n#                 ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                   ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                    ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                      ^ - function\n\n/////\n// Parameters spanning multiple lines.\n/////\n\n    func(\n#   ^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#       ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n      1,\n#     ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#      ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n      2\n#     ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n    )\n#   ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Allow object for-expressions.\n////\n\n    thing({for i, v in [\"a\"]: v => i...})\n#   ^^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#        ^ punctuation.section.parens.begin.terraform\n#         ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n#          ^^^ meta.braces.terraform keyword.control.loop.for.terraform\n#              ^ variable.other.readwrite.terraform\n#               ^ punctuation.separator.terraform\n#                 ^ variable.other.readwrite.terraform\n#                   ^^ keyword.operator.iteration.in.terraform\n#                      ^ punctuation.section.brackets.begin.terraform\n#                       ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^ string.quoted.double.terraform\n#                          ^ punctuation.section.brackets.end.terraform\n#                           ^ punctuation.section.block.loop.for.terraform\n#                             ^ variable.other.readwrite.terraform\n#                               ^^ punctuation.separator.key-value.terraform\n#                                  ^ variable.other.readwrite.terraform\n#                                   ^^^ keyword.operator.terraform\n#                                      ^ punctuation.section.braces.end.terraform\n#                                       ^ punctuation.section.parens.end.terraform\n\n/////\n// Allow tuple for-expressions.\n/////\n\n    func([for v in [\"a\", \"b\"]: v])\n#   ^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#       ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#       ^ punctuation.section.parens.begin.terraform\n#        ^ punctuation.section.brackets.begin.terraform\n#         ^^^ keyword.control.loop.for.terraform\n#             ^ variable.other.readwrite.terraform\n#               ^^ keyword.operator.iteration.in.terraform\n#                  ^ punctuation.section.brackets.begin.terraform\n#                   ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^ string.quoted.double.terraform\n#                      ^ punctuation.separator.terraform\n#                        ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                         ^^ string.quoted.double.terraform\n#                           ^ punctuation.section.brackets.end.terraform\n#                            ^ punctuation.section.block.loop.for.terraform\n#                              ^ variable.other.readwrite.terraform\n#                               ^ punctuation.section.brackets.end.terraform\n#                                ^ punctuation.section.parens.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// Built-in Terraform Functions\n// TODO: match % placeholders in format()-family first parameters\n// TODO: match regexs in regex()-family first parameters\n////////////////////////`/////////////////////////////////////////////\n\n/////\n// Numeric Functions\n/////\n\n      abs(23)\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      ceil(5.1)\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^^^ meta.function-call.arguments.terraform meta.number.float.decimal.terraform constant.numeric.value.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      floor(5)\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      log(50, 10)\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#             ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      max(12, 54, 3)\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#             ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                 ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      min(12, 54, 3)\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#             ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                 ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      pow(3, 2)\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#            ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      signum(-13)\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform keyword.operator.arithmetic.terraform\n#             ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// String Functions\n/////\n\n      chomp(\"hello\\n\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                 ^^ meta.function-call.arguments.terraform string.quoted.double.terraform constant.character.escape.terraform\n#                   ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      format(\"Hello, %s!\", \"Ander\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                           ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                 ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      formatlist(\"Hello, %s!\", [\"Valentina\", \"Ander\"])\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                ^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                          ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                             ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                   ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      indent(2, \"[\\n  foo,\\n  bar,\\n]\\n\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                       ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      join(\", \", [\"foo\", \"bar\", \"baz\"])\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#           ^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                 ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                        ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                         ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                    ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      lower(\"HELLO\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      regex(\"[a-z]+\", \"53453453.345345aaabbbccc23454\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                     ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      regexall(\"[a-z]+\", \"1234abcd5678efgh9\")\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                        ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                         ^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      replace(\"1 + 2 + 3\", \"+\", \"-\")\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#              ^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                           ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      split(\",\", \"foo\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      strrev(\"hello\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      substr(\"🤔🤷\", 0, 1)\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                  ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                     ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      title(\"hello world\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      trimspace(\"  hello\\n\\n\")\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      upper(\"hello\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Collection Functions\n/////\n\n      chunklist([\"a\", \"b\"], 2)\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                ^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                     ^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                           ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      coalesce(\"a\", \"b\")\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                   ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      coalescelist([], [\"c\", \"d\"])\n#     ^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                       ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                          ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                             ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      compact([\"a\", \"\", \"b\"])\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#              ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                   ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                       ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                          ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      concat([\"a\"], [\"c\"])\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#             ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#              ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                    ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                     ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      contains([\"a\"], \"a\")\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                     ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      distinct([\"a\", \"b\", \"a\"])\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                    ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                     ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                         ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                          ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      element([\"a\", \"b\"], 1)\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#              ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                   ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                         ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      flatten([[[\"a\", \"b\"]], [\"c\"]])\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^^^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                     ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                        ^^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                          ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                             ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                              ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                ^^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      index([\"a\"], \"b\")\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      keys({a=1, c=2})\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#           ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#            ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#             ^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#              ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                 ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                  ^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                   ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      length([])\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      list(\"a\", \"b\", \"c\")\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#           ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                    ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                     ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      lookup({a=\"ay\", b=\"bee\"}, \"a\", \"what?\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#             ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#              ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#               ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                   ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                     ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                      ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                       ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                    ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                     ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      map(\"a\", \"b\")\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#          ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#              ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      matchkeys([\"i-123\", \"i-abc\"], [\"us-west\", \"us-east\"], [\"us-east\"])\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                         ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                          ^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                 ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                   ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                                    ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                     ^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                             ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                ^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                        ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                                         ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                                           ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                                                            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                             ^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                                     ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                                                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      merge({a=\"b\"}, {e=\"f\"})\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#            ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#             ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#              ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                 ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                    ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#                     ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                      ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                       ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                          ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      range(1, 4)\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#              ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      reverse([1, 2, 3])\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#              ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                 ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                    ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      setintersection([\"a\", \"b\"], [\"b\", \"c\"])\n#     ^^^^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                      ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                       ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                            ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                 ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                   ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                     ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                       ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                        ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                          ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      setproduct([\"development\"], [\"app1\", \"app2\"])\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                 ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                 ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                   ^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                        ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                           ^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                                 ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      setunion([\"a\"], [\"b\"], [\"d\"])\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                  ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                      ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                       ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                          ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                             ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                              ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                                 ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      slice([\"a\", \"b\"], 1, 1)\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                 ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                       ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                          ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n      sort([\"e\", \"d\"])\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#           ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#            ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                   ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      transpose({a = [\"1\", \"2\"], b = [\"2\", \"3\"]})\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                  ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                    ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.brackets.begin.terraform\n#                     ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                        ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                          ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                           ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                             ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.brackets.end.terraform\n#                              ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                                ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                                  ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                                    ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.brackets.begin.terraform\n#                                     ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                      ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                                        ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                                          ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                           ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                                             ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.brackets.end.terraform\n#                                              ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      values({a=3, c=2, d=1})\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#             ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#              ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#               ^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                  ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                   ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                    ^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                     ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                       ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                        ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                         ^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                          ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      zipmap([\"a\", \"b\"], [1, 2])\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#             ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#              ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                        ^ meta.function-call.arguments.terraform punctuation.section.brackets.begin.terraform\n#                         ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                          ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                            ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.brackets.end.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Encoding Functions\n/////\n\n      base64decode(\"SGVsbG8gV29ybGQ=\")\n#     ^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      base64encode(\"Hello World\")\n#     ^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      base64gzip(\"Hello World\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      csvdecode(\"a,b,c\\n1,2,3\\n4,5,6\")\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      jsondecode(\"{\\\"hello\\\": \\\"world\\\"}\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                        ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      jsonencode({hello=\"world\"})\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#                 ^^^^^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                      ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                       ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^^^^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                              ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      urlencode(\"Hello World\")\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      yamldecode(\"true\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform - constant\n#                 ^^^^ meta.function-call.arguments.terraform meta.string.terraform string.quoted.double.terraform\n#                     ^ meta.function-call.arguments.terraform meta.string.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform - constant\n#                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      yamlencode({a = \"b\", c = \"d\"})\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n#                 ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                   ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                     ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                        ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                          ^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                            ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                              ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                               ^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Filesystem Functions\n/////\n\n      abspath(path.root)\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#            ^ punctuation.section.parens.begin.terraform\n#             ^^^^ variable.language.terraform\n#                 ^ punctuation.accessor.dot.terraform\n#                  ^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.parens.end.terraform\n\n      dirname(\"foo/bar/baz.txt\")\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#            ^ punctuation.section.parens.begin.terraform\n#             ^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#             ^ punctuation.definition.string.begin.terraform\n#                             ^ punctuation.definition.string.end.terraform\n#                              ^ punctuation.section.parens.end.terraform\n\n      pathexpand(\"~/.ssh/id_rsa\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#               ^ punctuation.section.parens.begin.terraform\n#                ^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#                ^ punctuation.definition.string.begin.terraform\n#                              ^ punctuation.definition.string.end.terraform\n#                               ^ punctuation.section.parens.end.terraform\n\n      basename(\"foo/bar/baz.txt\")\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#             ^ punctuation.section.parens.begin.terraform\n#              ^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#              ^ punctuation.definition.string.begin.terraform\n#                              ^ punctuation.definition.string.end.terraform\n#                               ^ punctuation.section.parens.end.terraform\n\n      file(\"${path.module}/hello.txt\")\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#           ^^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#             ^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.language.terraform\n#                 ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                  ^^^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.other.member.terraform\n#                        ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                         ^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                    ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      fileexists(\"${path.module}/hello.txt\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                   ^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.language.terraform\n#                       ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                        ^^^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.other.member.terraform\n#                              ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                               ^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      fileset(path.module, \"files/*.txt\")\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#            ^ punctuation.section.parens.begin.terraform\n#             ^^^^ variable.language.terraform\n#                 ^ punctuation.accessor.dot.terraform\n#                  ^^^^^^ variable.other.member.terraform\n#                        ^ punctuation.separator.terraform\n#                          ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                           ^^^^^^^^^^^^ string.quoted.double.terraform\n#                                       ^ punctuation.section.parens.end.terraform\n\n      filebase64(\"${path.module}/hello.txt\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                   ^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.language.terraform\n#                       ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                        ^^^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.other.member.terraform\n#                              ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                               ^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      templatefile(\"${path.module}/backends.tmpl\", {\n#     ^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                     ^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.language.terraform\n#                         ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                          ^^^^^^ meta.function-call.arguments.terraform meta.interpolation.terraform variable.other.member.terraform\n#                                ^ meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                 ^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                                  ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.begin.terraform\n        port = 8080,\n#       ^^^^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#            ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#              ^^^^ meta.function-call.arguments.terraform meta.braces.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                   ^ meta.function-call.arguments.terraform meta.braces.terraform\n        ip_addrs = [\"10.0.0.1\", \"10.0.0.2\"]\n#       ^^^^^^^^ meta.function-call.arguments.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform\n#                ^ meta.function-call.arguments.terraform meta.braces.terraform keyword.operator.assignment.terraform\n#                  ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.brackets.begin.terraform\n#                   ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^^^^^^^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                             ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.separator.terraform\n#                               ^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                ^^^^^^^^^ meta.function-call.arguments.terraform meta.braces.terraform string.quoted.double.terraform\n#                                         ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.brackets.end.terraform\n      })\n#     ^ meta.function-call.arguments.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n#      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Date & Time Functions\n/////\n\n      formatdate(\"DD MMM YYYY hh:mm ZZZ\", \"2018-01-02T23:12:01Z\")\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                       ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                         ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                          ^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      timeadd(\"2017-11-22T00:00:00Z\", \"10m\")\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#              ^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                     ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                      ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      timestamp()\n#     ^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Hash & Crypto Functions\n/////\n\n      base64sha256(\"hello world\")\n#     ^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      base64sha512(\"hello world\")\n#     ^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      bcrypt(\"hello world\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      filebase64sha256(file(\"filename\"))\n#     ^^^^^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                      ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                          ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                           ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                            ^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                     ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                       ^ - function\n\n      filebase64sha512(file(\"filename\"))\n#     ^^^^^^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                     ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                      ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                          ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                           ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                            ^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                     ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                       ^ - function\n\n      filemd5(file(\"filename\"))\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      filemd1(file(\"filename\"))\n#     ^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                 ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                  ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                            ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                              ^ - function\n\n      filesha256(file(\"filename\"))\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                    ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                     ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                 ^ - function\n\n      filesha512(file(\"filename\"))\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                    ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                     ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                 ^ - function\n\n      md5(\"hello world\")\n#     ^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#        ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#         ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#          ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      rsadecrypt(filebase64(\"${path.module}/ciphertext\"), file(\"privatekey.pem\"))\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                          ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                           ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                            ^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform\n#                              ^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.interpolation.terraform variable.language.terraform\n#                                  ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform\n#                                   ^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.interpolation.terraform variable.other.member.terraform\n#                                         ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform\n#                                          ^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                      ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                                       ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                                         ^^^^ meta.function-call.arguments.terraform meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                                             ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                                                              ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                               ^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                                                              ^ meta.function-call.arguments.terraform meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                                                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                                                                ^ - function\n\n      sha1(\"hello world\")\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#           ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                       ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      sha256(\"hello world\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      sha512(\"hello world\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                         ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      uuid()\n#     ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#         ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#          ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      uuidv5(\"dns\", \"www.terraform.io\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#            ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                 ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                   ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                    ^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// IP Network Functions\n/////\n\n      cidrhost(\"10.12.127.0/20\", 16)\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#              ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#               ^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                ^^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      cidrnetmask(\"172.16.0.0/12\")\n#     ^^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                 ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n      cidrsubnet(\"172.16.0.0/12\", 4, 2)\n#     ^^^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#               ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                ^ meta.function-call.arguments.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                 ^^^^^^^^^^^^^^ meta.function-call.arguments.terraform string.quoted.double.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                 ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                    ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                     ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n\n/////\n// Type Conversions Functions\n/////\n\n      tobool(true)\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#           ^ punctuation.section.parens.begin.terraform\n#            ^^^^ constant.language.boolean.true.terraform\n#                ^ punctuation.section.parens.end.terraform\n\n      tobool(\"true\")\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#           ^ punctuation.section.parens.begin.terraform\n#            ^^^^^^ meta.string.terraform string.quoted.double.terraform\n#            ^ punctuation.definition.string.begin.terraform\n#                 ^ punctuation.definition.string.end.terraform\n#                  ^ punctuation.section.parens.end.terraform\n\n      tolist([\"a\", \"b\", \"c\"])\n#     ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#           ^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#           ^ punctuation.section.parens.begin.terraform\n#            ^ punctuation.section.brackets.begin.terraform\n#             ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#              ^^ string.quoted.double.terraform\n#                ^ punctuation.separator.terraform\n#                  ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                   ^^ string.quoted.double.terraform\n#                     ^ punctuation.separator.terraform\n#                       ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                        ^^ string.quoted.double.terraform\n#                          ^ punctuation.section.brackets.end.terraform\n#                           ^ punctuation.section.parens.end.terraform\n\n      tomap({a = 1, b = 2})\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform meta.parens.terraform - meta.brackets\n#           ^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform meta.braces.terraform\n#                         ^ meta.function-call.arguments.terraform meta.parens.terraform - meta.brackets\n#          ^ punctuation.section.parens.begin.terraform\n#           ^ punctuation.section.braces.begin.terraform\n#            ^ meta.mapping.key.terraform string.unquoted.terraform\n#              ^ keyword.operator.assignment.terraform\n#                ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                 ^ punctuation.separator.terraform\n#                   ^ meta.mapping.key.terraform string.unquoted.terraform\n#                     ^ keyword.operator.assignment.terraform\n#                       ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                        ^ punctuation.section.braces.end.terraform\n#                         ^ punctuation.section.parens.end.terraform\n\n      tonumber(1)\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#             ^ punctuation.section.parens.begin.terraform\n#              ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ punctuation.section.parens.end.terraform\n\n      toset([\"a\", \"b\", \"c\"])\n#     ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#          ^ meta.function-call.arguments.terraform meta.parens.terraform - meta.brackets\n#           ^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform meta.brackets.terraform\n#                          ^ meta.function-call.arguments.terraform meta.parens.terraform - meta.brackets\n#          ^ punctuation.section.parens.begin.terraform\n#           ^ punctuation.section.brackets.begin.terraform\n#            ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#             ^^ string.quoted.double.terraform\n#               ^ punctuation.separator.terraform\n#                 ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^ string.quoted.double.terraform\n#                    ^ punctuation.separator.terraform\n#                      ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                       ^^ string.quoted.double.terraform\n#                         ^ punctuation.section.brackets.end.terraform\n#                          ^ punctuation.section.parens.end.terraform\n\n      tostring(\"hello\")\n#     ^^^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#             ^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#             ^ punctuation.section.parens.begin.terraform\n#              ^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#                     ^ punctuation.section.parens.end.terraform\n\n    provider::terraform::encode_tfvars({\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.identifier.terraform\n#                                     ^ meta.function-call.arguments.terraform meta.parens.terraform - meta.braces\n#                                      ^ meta.function-call.arguments.terraform meta.parens.terraform meta.braces.terraform\n#   ^^^^^^^^ variable.namespace.terraform\n#           ^^ punctuation.accessor.double-colon.terraform\n#             ^^^^^^^^^ variable.namespace.terraform\n#                      ^^ punctuation.accessor.double-colon.terraform\n#                        ^^^^^^^^^^^^^ support.function.builtin.terraform\n#                                     ^ punctuation.section.parens.begin.terraform\n#                                      ^ punctuation.section.braces.begin.terraform\n      example = \"Hello!\"\n    })\n#^^^^ meta.function-call.arguments.terraform meta.parens.terraform meta.braces.terraform\n#    ^ meta.function-call.arguments.terraform meta.parens.terraform - meta.braces\n#   ^ punctuation.section.braces.end.terraform\n#    ^ punctuation.section.parens.end.terraform\n\n    my::namespace::func(\"args\")\n#   ^^^^^^^^^^^^^^^^^^^ meta.function-call.identifier.terraform\n#   ^^ variable.namespace.terraform\n#     ^^ punctuation.accessor.double-colon.terraform\n#       ^^^^^^^^^ variable.namespace.terraform\n#                ^^ punctuation.accessor.double-colon.terraform\n#                  ^^^^ variable.function.terraform\n#                      ^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#                      ^ punctuation.section.parens.begin.terraform\n#                       ^^^^^^ meta.string.terraform string.quoted.double.terraform\n#                             ^ punctuation.section.parens.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// TUPLE FOR-EXPRESSIONS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Basic expression.\n/////\n\n    [for s in var.list : upper(s)]\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#          ^^ keyword.operator.iteration.in.terraform\n#             ^^^ variable.language.terraform\n#                ^ punctuation.accessor.dot.terraform\n#                 ^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.block.loop.for.terraform\n#                        ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                              ^ meta.function-call.arguments.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                ^ punctuation.section.brackets.end.terraform\n\n/////\n// Object or map source value.\n////\n\n    [for k, v in var.map : length(k) + length(v)]\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#         ^ punctuation.separator.terraform\n#           ^ variable.other.readwrite.terraform\n#             ^^ keyword.operator.iteration.in.terraform\n#                ^^^ variable.language.terraform\n#                   ^ punctuation.accessor.dot.terraform\n#                    ^^^ variable.other.member.terraform\n#                        ^ punctuation.section.block.loop.for.terraform\n#                          ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                                 ^ meta.function-call.arguments.terraform\n#                                  ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                    ^ keyword.operator.arithmetic.terraform\n#                                      ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                                             ^ meta.function-call.arguments.terraform\n#                                              ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                               ^ punctuation.section.brackets.end.terraform\n\n/////\n// Complex right-side expressions.\n////\n\n    [for o in var.list : o.interfaces[0].name]\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#          ^^ keyword.operator.iteration.in.terraform\n#             ^^^ variable.language.terraform\n#                ^ punctuation.accessor.dot.terraform\n#                 ^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.block.loop.for.terraform\n#                        ^ variable.other.readwrite.terraform\n#                         ^ punctuation.accessor.dot.terraform\n#                          ^^^^^^^^^^ variable.other.member.terraform\n#                                    ^ punctuation.section.brackets.begin.terraform\n#                                     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                      ^ punctuation.section.brackets.end.terraform\n#                                       ^ punctuation.accessor.dot.terraform\n#                                        ^^^^ variable.other.member.terraform\n#                                            ^ punctuation.section.brackets.end.terraform\n\n/////\n// Legacy splat expression attribute access.\n/////\n\n    [for o in var.list : o.interfaces][0].name\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#          ^^ keyword.operator.iteration.in.terraform\n#             ^^^ variable.language.terraform\n#                ^ punctuation.accessor.dot.terraform\n#                 ^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.block.loop.for.terraform\n#                        ^ variable.other.readwrite.terraform\n#                         ^ punctuation.accessor.dot.terraform\n#                          ^^^^^^^^^^ variable.other.member.terraform\n#                                    ^ punctuation.section.brackets.end.terraform\n#                                     ^ punctuation.section.brackets.begin.terraform\n#                                      ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                       ^ punctuation.section.brackets.end.terraform\n#                                        ^ punctuation.accessor.dot.terraform\n#                                         ^^^^ variable.other.member.terraform\n\n/////\n// Multi-line for-expressions.\n/////\n\n    value = [\n#          ^ - meta.brackets\n#           ^^ meta.brackets.terraform\n#   ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#         ^ keyword.operator.assignment.terraform\n#           ^ punctuation.section.brackets.begin.terraform\n      for instance in aws_instance.ubuntu:\n#    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#     ^^^ keyword.control.loop.for.terraform\n#         ^^^^^^^^ variable.other.readwrite.terraform\n#                  ^^ keyword.operator.iteration.in.terraform\n#                     ^^^^^^^^^^^^ variable.other.readwrite.terraform\n#                                 ^ punctuation.accessor.dot.terraform\n#                                  ^^^^^^ variable.other.member.terraform\n#                                        ^ punctuation.section.block.loop.for.terraform\n      instance.private_dns\n#    ^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#     ^^^^^^^^ variable.other.readwrite.terraform\n#             ^ punctuation.accessor.dot.terraform\n#              ^^^^^^^^^^^ variable.other.member.terraform\n    ]\n#^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.end.terraform\n#    ^ - meta.brackets\n\n/////\n// Match conditional on right-side expression.\n/////\n\n    value = [\n#          ^ - meta.brackets\n#           ^^ meta.brackets.terraform\n#   ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#         ^ keyword.operator.assignment.terraform\n#           ^ punctuation.section.brackets.begin.terraform\n      for instance in aws_instance.ubuntu:\n#    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#     ^^^ keyword.control.loop.for.terraform\n#         ^^^^^^^^ variable.other.readwrite.terraform\n#                  ^^ keyword.operator.iteration.in.terraform\n#                     ^^^^^^^^^^^^ variable.other.readwrite.terraform\n#                                 ^ punctuation.accessor.dot.terraform\n#                                  ^^^^^^ variable.other.member.terraform\n#                                        ^ punctuation.section.block.loop.for.terraform\n      (instance.public_ip != \"\" ? list(instance.private_ip, instance.public_ip) : list(instance.private_ip))\n#    ^ meta.brackets.terraform - meta.parens\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform meta.parens.terraform\n#                                                                                                           ^ meta.brackets.terraform - meta.parens\n#     ^ punctuation.section.parens.begin.terraform\n#      ^^^^^^^^ variable.other.readwrite.terraform\n#              ^ punctuation.accessor.dot.terraform\n#               ^^^^^^^^^ variable.other.member.terraform\n#                         ^^ keyword.operator.comparison.terraform\n#                            ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                             ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                               ^ keyword.operator.ternary.terraform\n#                                 ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#                                     ^ punctuation.section.parens.begin.terraform\n#                                      ^^^^^^^^ variable.other.readwrite.terraform\n#                                              ^ punctuation.accessor.dot.terraform\n#                                               ^^^^^^^^^^ variable.other.member.terraform\n#                                                         ^ punctuation.separator.terraform\n#                                                           ^^^^^^^^ variable.other.readwrite.terraform\n#                                                                   ^ punctuation.accessor.dot.terraform\n#                                                                    ^^^^^^^^^ variable.other.member.terraform\n#                                                                             ^ punctuation.section.parens.end.terraform\n#                                                                               ^ keyword.operator.ternary.terraform\n#                                                                                 ^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                                                                                     ^^^^^^^^^^^^^^^^^^^^^ meta.function-call.arguments.terraform meta.parens.terraform\n#                                                                                     ^ punctuation.section.parens.begin.terraform\n#                                                                                      ^^^^^^^^ variable.other.readwrite.terraform\n#                                                                                              ^ punctuation.accessor.dot.terraform\n#                                                                                               ^^^^^^^^^^ variable.other.member.terraform\n#                                                                                                         ^ punctuation.section.parens.end.terraform\n#                                                                                                          ^ punctuation.section.parens.end.terraform\n    ]\n#^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.end.terraform\n#    ^ - meta.brackets\n\n/////\n// Match brackets on right-side expression.\n/////\n\n    value = [\n#   ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#         ^ keyword.operator.assignment.terraform\n#           ^ punctuation.section.brackets.begin.terraform\n      for instance in aws_instance.ubuntu:\n#    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform\n#     ^^^ keyword.control.loop.for.terraform\n#         ^^^^^^^^ variable.other.readwrite.terraform\n#                  ^^ keyword.operator.iteration.in.terraform\n#                     ^^^^^^^^^^^^ variable.other.readwrite.terraform\n#                                 ^ punctuation.accessor.dot.terraform\n#                                  ^^^^^^ variable.other.member.terraform\n#                                        ^ punctuation.section.block.loop.for.terraform\n      (instance.public_ip != \"\" ? [instance.private_ip, instance.public_ip] : [instance.private_ip])\n#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform meta.parens.terraform - meta.parens meta.brackets\n#                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform meta.parens.terraform meta.brackets.terraform\n#                                                                          ^^^ meta.brackets.terraform meta.parens.terraform - meta.parens meta.brackets\n#                                                                             ^^^^^^^^^^^^^^^^^^^^^ meta.brackets.terraform meta.parens.terraform meta.brackets.terraform\n#                                                                                                  ^ meta.brackets.terraform meta.parens.terraform - meta.parens meta.brackets\n#                                                                                                   ^ meta.brackets.terraform - meta.parens\n#     ^ punctuation.section.parens.begin.terraform\n#      ^^^^^^^^ variable.other.readwrite.terraform\n#              ^ punctuation.accessor.dot.terraform\n#               ^^^^^^^^^ variable.other.member.terraform\n#                         ^^ keyword.operator.comparison.terraform\n#                            ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                             ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                               ^ keyword.operator.ternary.terraform\n#                                 ^ punctuation.section.brackets.begin.terraform\n#                                          ^ punctuation.accessor.dot.terraform\n#                                           ^^^^^^^^^^ variable.other.member.terraform\n#                                                     ^ punctuation.separator.terraform\n#                                                               ^ punctuation.accessor.dot.terraform\n#                                                                ^^^^^^^^^ variable.other.member.terraform\n#                                                                         ^ punctuation.section.brackets.end.terraform\n#                                                                           ^ keyword.operator.ternary.terraform\n#                                                                             ^ punctuation.section.brackets.begin.terraform\n#                                                                                      ^ punctuation.accessor.dot.terraform\n#                                                                                       ^^^^^^^^^^ variable.other.member.terraform\n#                                                                                                 ^ punctuation.section.brackets.end.terraform\n#                                                                                                  ^ punctuation.section.parens.end.terraform\n    ]\n# <- meta.brackets.terraform\n#^^^^ meta.brackets.terraform\n#   ^ punctuation.section.brackets.end.terraform\n#    ^ - meta.brackets\n\n/////\n// Match if-conditionals on right-side.\n/////\n\n    [for s in var.list : upper(s) if s != \"\"]\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#          ^^ keyword.operator.iteration.in.terraform\n#             ^^^ variable.language.terraform\n#                ^ punctuation.accessor.dot.terraform\n#                 ^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.block.loop.for.terraform\n#                        ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                             ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                              ^ meta.function-call.arguments.terraform\n#                               ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                 ^^ keyword.control.conditional.terraform\n#                                    ^ variable.other.readwrite.terraform\n#                                      ^^ keyword.operator.comparison.terraform\n#                                         ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                          ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                           ^ punctuation.section.brackets.end.terraform\n\n/////\n// Matches bracket-literals as range expression.\n/////\n\n    [for i, v in [\"a\", \"b\", \"c\"]: v if i < 2]\n#   ^^^^^^^^^^^^^ meta.brackets.terraform - meta.brackets meta.brackets\n#                ^^^^^^^^^^^^^^^ meta.brackets.terraform meta.brackets.terraform\n#                               ^^^^^^^^^^^^^ meta.brackets.terraform - meta.brackets meta.brackets\n#   ^ punctuation.section.brackets.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#         ^ punctuation.separator.terraform\n#           ^ variable.other.readwrite.terraform\n#             ^^ keyword.operator.iteration.in.terraform\n#                ^ punctuation.section.brackets.begin.terraform\n#                 ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^ string.quoted.double.terraform\n#                    ^ punctuation.separator.terraform\n#                      ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                       ^^ string.quoted.double.terraform\n#                         ^ punctuation.separator.terraform\n#                           ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                            ^^ string.quoted.double.terraform\n#                              ^ punctuation.section.brackets.end.terraform\n#                               ^ punctuation.section.block.loop.for.terraform\n#                                 ^ variable.other.readwrite.terraform\n#                                   ^^ keyword.control.conditional.terraform\n#                                      ^ variable.other.readwrite.terraform\n#                                        ^ keyword.operator.comparison.terraform\n#                                          ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                           ^ punctuation.section.brackets.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// OBJECT FOR-EXPRESSIONS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Matches basic syntax.\n/////\n\n    {for i, v in [\"a\", \"b\"]: v => i}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#         ^ punctuation.separator.terraform\n#           ^ variable.other.readwrite.terraform\n#             ^^ keyword.operator.iteration.in.terraform\n#                ^ punctuation.section.brackets.begin.terraform\n#                 ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^ string.quoted.double.terraform\n#                    ^ punctuation.separator.terraform\n#                      ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                       ^^ string.quoted.double.terraform\n#                         ^ punctuation.section.brackets.end.terraform\n#                          ^ punctuation.section.block.loop.for.terraform\n#                            ^ variable.other.readwrite.terraform\n#                              ^^ punctuation.separator.key-value.terraform\n#                                 ^ variable.other.readwrite.terraform\n#                                  ^ punctuation.section.braces.end.terraform\n#                                   ^ - meta\n\n/////\n// Matches ellipsis.\n/////\n\n    {for i, v in [\"a\"]: v => i...}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#         ^ punctuation.separator.terraform\n#           ^ variable.other.readwrite.terraform\n#             ^^ keyword.operator.iteration.in.terraform\n#                ^ punctuation.section.brackets.begin.terraform\n#                 ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                  ^^ string.quoted.double.terraform\n#                    ^ punctuation.section.brackets.end.terraform\n#                     ^ punctuation.section.block.loop.for.terraform\n#                       ^ variable.other.readwrite.terraform\n#                         ^^ punctuation.separator.key-value.terraform\n#                            ^ variable.other.readwrite.terraform\n#                             ^^^ keyword.operator.terraform\n#                                ^ punctuation.section.braces.end.terraform\n\n/////\n// Matches if-conditional.\n/////\n\n    {for s in var.list : substr(s, 0, 1) => s... if s != \"\"}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.begin.terraform\n#    ^^^ keyword.control.loop.for.terraform\n#        ^ variable.other.readwrite.terraform\n#          ^^ keyword.operator.iteration.in.terraform\n#             ^^^ variable.language.terraform\n#                ^ punctuation.accessor.dot.terraform\n#                 ^^^^ variable.other.member.terraform\n#                      ^ punctuation.section.block.loop.for.terraform\n#                        ^^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#                              ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                               ^ meta.function-call.arguments.terraform\n#                                ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                  ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                   ^ meta.function-call.arguments.terraform punctuation.separator.terraform\n#                                     ^ meta.function-call.arguments.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                      ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n#                                        ^^ punctuation.separator.key-value.terraform\n#                                           ^ variable.other.readwrite.terraform\n#                                            ^^^ keyword.operator.terraform\n#                                                ^^ keyword.control.conditional.terraform\n#                                                   ^ variable.other.readwrite.terraform\n#                                                     ^^ keyword.operator.comparison.terraform\n#                                                        ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                                                         ^ string.quoted.double.terraform punctuation.definition.string.end.terraform\n#                                                          ^ punctuation.section.braces.end.terraform\n\n/////\n// Matches over multiple-lines.\n/////\n\n    value = {\n#   ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#         ^ keyword.operator.assignment.terraform\n#          ^ - meta.braces\n#           ^ meta.braces.terraform punctuation.section.braces.begin.terraform\n      for l in var.letters: l =>\n#    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.braces.terraform\n#     ^^^ meta.braces.terraform keyword.control.loop.for.terraform\n#         ^ variable.other.readwrite.terraform\n#           ^^ keyword.operator.iteration.in.terraform\n#              ^^^ variable.language.terraform\n#                 ^ punctuation.accessor.dot.terraform\n#                  ^^^^^^^ variable.other.member.terraform\n#                         ^ punctuation.section.block.loop.for.terraform\n#                           ^ variable.other.readwrite.terraform\n#                             ^^ punctuation.separator.key-value.terraform\n        upper(l)\n#      ^^^^^^^^^^ meta.braces.terraform\n#       ^^^^^ meta.function-call.identifier.terraform support.function.builtin.terraform\n#            ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#             ^ meta.function-call.arguments.terraform\n#              ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n    }\n# <- meta.braces.terraform\n#^^^^ meta.braces.terraform\n#   ^ punctuation.section.braces.end.terraform\n#    ^ - meta.braces\n\n/////////////////////////////////////////////////////////////////////\n// BLOCKS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Inline block with no labels.\n////\n\n    thing  {}\n#   ^^^^^^^ meta.block.head.terraform\n#   ^^^^^ keyword.declaration.terraform\n#          ^^ meta.block.body.terraform\n#          ^ punctuation.section.block.begin.terraform\n#           ^ punctuation.section.block.end.terraform\n\n/////\n// Inline block with string labels.\n/////\n\n    thing \"label1\"   \"label2\\\"\" {}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^ keyword.declaration.terraform\n#         ^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#         ^ punctuation.definition.string.begin.terraform\n#                ^ punctuation.definition.string.end.terraform\n#                    ^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#                    ^ punctuation.definition.string.begin.terraform\n#                           ^^ constant.character.escape.terraform\n#                             ^ punctuation.definition.string.end.terraform\n#                               ^^ meta.block.body.terraform\n#                               ^ punctuation.section.block.begin.terraform\n#                                ^ punctuation.section.block.end.terraform\n\n/////\n// Inline block with identifier labels.\n/////\n\n    thing thing1 thing2 thing3 {}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^ keyword.declaration.terraform\n#         ^^^^^^ string.unquoted.double.terraform\n#                ^^^^^^ string.unquoted.double.terraform\n#                       ^^^^^^ string.unquoted.double.terraform\n#                              ^^ meta.block.body.terraform\n#                              ^ punctuation.section.block.begin.terraform\n#                               ^ punctuation.section.block.end.terraform\n\n//////\n// Nested multi-line blocks with expressions.\n/////\n\n    resource \"aws_security_group\" \"example\" {\n#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^^^ keyword.declaration.terraform\n#            ^^^^^^^^^^^^^^^^^^^^ meta.string.terraform\n#            ^ punctuation.definition.string.begin.terraform\n#             ^^^^^^^^^^^^^^^^^^ support.type.terraform\n#                               ^ punctuation.definition.string.end.terraform\n#                                 ^^^^^^^^^ meta.string.terraform\n#                                 ^ punctuation.definition.string.begin.terraform\n#                                  ^^^^^^^ entity.name.label.terraform\n#                                         ^ punctuation.definition.string.end.terraform\n#                                           ^ meta.block.body.terraform punctuation.section.block.begin.terraform\n\n      name = \"example\"\n#     ^^^^^^^^^^^^^^^^ meta.block.body.terraform\n#     ^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#          ^ keyword.operator.assignment.terraform\n#            ^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#            ^ punctuation.definition.string.begin.terraform\n#                    ^ punctuation.definition.string.end.terraform\n\n      dynamic \"ingress\" {\n#^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform - meta.block meta.block meta.block\n#     ^^^^^^^^^^^^^^^^^^ meta.block.body.terraform meta.block.head.terraform\n#     ^^^^^^^ keyword.declaration.terraform\n#             ^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#             ^ punctuation.definition.string.begin.terraform\n#                     ^ punctuation.definition.string.end.terraform\n#                       ^ meta.block.body.terraform meta.block.body.terraform punctuation.section.block.begin.terraform\n\n        for_each = var.service_ports\n#       ^^^^^^^^ variable.declaration.terraform keyword.control.loop.for.terraform\n#                ^ keyword.operator.assignment.terraform\n#                  ^^^ variable.language.terraform\n#                     ^ punctuation.accessor.dot.terraform\n#                      ^^^^^^^^^^^^^ variable.other.member.terraform\n        content {\n#       ^^^^^^^ meta.block.body.terraform meta.block.body.terraform meta.block.head.terraform\n#              ^ meta.block.body.terraform meta.block.body.terraform - meta.type\n#               ^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform - meta.type\n#       ^^^^^^^ keyword.declaration.terraform\n#               ^ punctuation.section.block.begin.terraform\n          from_port = ingress.value\n#         ^^^^^^^^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform variable.declaration.terraform variable.other.readwrite.terraform\n#                   ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform keyword.operator.assignment.terraform\n#                            ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform punctuation.accessor.dot.terraform\n#                             ^^^^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform variable.other.member.terraform\n          to_port   = ingress.value\n#         ^^^^^^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform variable.declaration.terraform variable.other.readwrite.terraform\n#                   ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform keyword.operator.assignment.terraform\n#                            ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform punctuation.accessor.dot.terraform\n          protocol  = \"tcp\" + \"IP\"\n#         ^^^^^^^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform variable.declaration.terraform variable.other.readwrite.terraform\n#                   ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform keyword.operator.assignment.terraform\n#                     ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                      ^^^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform string.quoted.double.terraform\n#                           ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform keyword.operator.arithmetic.terraform\n#                             ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform\n#                              ^^^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform string.quoted.double.terraform\n        }\n#       ^ meta.block.body.terraform meta.block.body.terraform meta.block.body.terraform punctuation.section.block.end.terraform\n      }\n#     ^ meta.block.body.terraform meta.block.body.terraform punctuation.section.block.end.terraform\n    }\n#   ^ meta.block.body.terraform punctuation.section.block.end.terraform\n#    ^ - meta\n\n/////\n// Matches blocks with functions, objects, tuples.\n/////\n\n    thing label1 {\n#   ^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^ keyword.declaration.terraform\n#         ^^^^^^ string.unquoted.double.terraform\n#                ^ meta.block.body.terraform punctuation.section.block.begin.terraform\n\n      func = function(param1)\n#    ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform\n#     ^^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#          ^ keyword.operator.assignment.terraform\n#            ^^^^^^^^ meta.function-call.identifier.terraform variable.function.terraform\n#                    ^ meta.function-call.arguments.terraform punctuation.section.parens.begin.terraform\n#                     ^^^^^^ meta.function-call.arguments.terraform\n#                           ^ meta.function-call.arguments.terraform punctuation.section.parens.end.terraform\n      obj = {\n#    ^^^^^^^ meta.block.body.terraform - meta.braces\n#           ^^ meta.block.body.terraform meta.braces.terraform\n#     ^^^ variable.declaration.terraform variable.other.readwrite.terraform\n#         ^ keyword.operator.assignment.terraform\n        key = \"value\"\n#      ^^^^^^^^^^^^^^^ meta.block.body.terraform meta.braces.terraform\n#       ^^^ meta.mapping.key.terraform string.unquoted.terraform\n#           ^ keyword.operator.assignment.terraform\n#             ^^^^^^^ meta.string.terraform string.quoted.double.terraform\n      }\n#     ^ meta.block.body.terraform meta.braces.terraform punctuation.section.braces.end.terraform\n      tuple = [1, 2]\n#     ^^^^^ meta.block.body.terraform variable.declaration.terraform variable.other.readwrite.terraform\n#           ^ meta.block.body.terraform keyword.operator.assignment.terraform\n#             ^ meta.block.body.terraform punctuation.section.brackets.begin.terraform\n#              ^ meta.block.body.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#               ^ meta.block.body.terraform punctuation.separator.terraform\n#                 ^ meta.block.body.terraform meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                  ^ meta.block.body.terraform punctuation.section.brackets.end.terraform\n    }\n#   ^ meta.block.body.terraform punctuation.section.block.end.terraform\n#    ^ - meta - block\n\n/////////////////////////////////////////////////////////////////////\n// TERRAFORM NAMED VALUES\n/////////////////////////////////////////////////////////////////////\n\n    var.something\n#   ^^^ variable.language.terraform\n#      ^ punctuation.accessor.dot.terraform\n#       ^^^^^^^^^ variable.other.member.terraform\n\n    local.something\n#   ^^^^^ variable.language.terraform\n#        ^ punctuation.accessor.dot.terraform\n#         ^^^^^^^^^ variable.other.member.terraform\n\n    module.name.output_name\n#   ^^^^^^ variable.language.terraform\n#         ^ punctuation.accessor.dot.terraform\n#          ^^^^ variable.other.member.terraform\n#              ^ punctuation.accessor.dot.terraform\n#               ^^^^^^^^^^^ variable.other.member.terraform\n\n    data.data_type.name\n#   ^^^^ variable.language.terraform\n#       ^ punctuation.accessor.dot.terraform\n#        ^^^^^^^^^ variable.other.member.terraform\n#                 ^ punctuation.accessor.dot.terraform\n#                  ^^^^ variable.other.member.terraform\n\n    path.module\n#   ^^^^ variable.language.terraform\n#       ^ punctuation.accessor.dot.terraform\n#        ^^^^^^ variable.other.member.terraform\n\n    terraform.workspace\n#   ^^^^^^^^^ variable.language.terraform\n#            ^ punctuation.accessor.dot.terraform\n#             ^^^^^^^^^ variable.other.member.terraform\n\n    count.index\n#   ^^^^^ variable.language.terraform\n#        ^ punctuation.accessor.dot.terraform\n#         ^^^^^ variable.other.member.terraform\n\n    each.key\n#   ^^^^ variable.language.terraform\n#       ^ punctuation.accessor.dot.terraform\n#        ^^^ variable.other.member.terraform\n\n    self.private_ip\n#   ^^^^ variable.language.terraform\n#       ^ punctuation.accessor.dot.terraform\n#        ^^^^^^^^^^ variable.other.member.terraform\n\n/////////////////////////////////////////////////////////////////////\n// TERRAFORM TOP-LEVEL BLOCK TYPES\n/////////////////////////////////////////////////////////////////////\n\n    resource \"type\" \"name\" {}\n#   ^^^^^^^^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^^^ keyword.declaration.terraform\n#            ^^^^^^ meta.string.terraform\n#            ^ punctuation.definition.string.begin.terraform\n#             ^^^^ support.type.terraform\n#                 ^ punctuation.definition.string.end.terraform\n#                   ^^^^^^ meta.string.terraform\n#                   ^ punctuation.definition.string.begin.terraform\n#                    ^^^^ entity.name.label.terraform\n#                        ^ punctuation.definition.string.end.terraform\n#                          ^^ meta.block.body.terraform\n#                          ^ punctuation.section.block.begin.terraform\n#                           ^ punctuation.section.block.end.terraform\n\n    ephemeral \"type\" \"name\" {}\n#   ^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^^^^ keyword.declaration.terraform\n#             ^^^^^^ meta.string.terraform\n#             ^ punctuation.definition.string.begin.terraform\n#              ^^^^ support.type.terraform\n#                  ^ punctuation.definition.string.end.terraform\n#                    ^^^^^^ meta.string.terraform\n#                    ^ punctuation.definition.string.begin.terraform\n#                     ^^^^ entity.name.label.terraform\n#                         ^ punctuation.definition.string.end.terraform\n#                           ^^ meta.block.body.terraform\n#                           ^ punctuation.section.block.begin.terraform\n#                            ^ punctuation.section.block.end.terraform\n\n    data \"type\" name {}\n#   ^^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^ keyword.declaration.terraform\n#        ^^^^^^ meta.string.terraform\n#        ^ punctuation.definition.string.begin.terraform\n#         ^^^^ support.type.terraform\n#             ^ punctuation.definition.string.end.terraform\n#               ^^^^ entity.name.label.terraform\n#                    ^^ meta.block.body.terraform\n#                    ^ punctuation.section.block.begin.terraform\n#                     ^ punctuation.section.block.end.terraform\n\n    provider \"name\" {}\n#   ^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^^^ keyword.declaration.terraform\n#            ^^^^^^ meta.string.terraform\n#            ^ punctuation.definition.string.begin.terraform\n#             ^^^^ entity.name.label.terraform\n#                 ^ punctuation.definition.string.end.terraform\n#                   ^^ meta.block.body.terraform\n#                   ^ punctuation.section.block.begin.terraform\n#                    ^ punctuation.section.block.end.terraform\n\n    module name {}\n#   ^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^ keyword.declaration.terraform\n#          ^^^^ entity.name.label.terraform\n#               ^^ meta.block.body.terraform\n#               ^ punctuation.section.block.begin.terraform\n#                ^ punctuation.section.block.end.terraform\n\n    variable \"name\" {}\n#   ^^^^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^^^ keyword.declaration.terraform\n#            ^^^^^^ meta.string.terraform\n#            ^ punctuation.definition.string.begin.terraform\n#             ^^^^ entity.name.label.terraform\n#                 ^ punctuation.definition.string.end.terraform\n#                   ^^ meta.block.body.terraform\n#                   ^ punctuation.section.block.begin.terraform\n#                    ^ punctuation.section.block.end.terraform\n\n    output \"name\"{}\n#   ^^^^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^ keyword.declaration.terraform\n#          ^^^^^^ meta.string.terraform\n#          ^ punctuation.definition.string.begin.terraform\n#           ^^^^ entity.name.label.terraform\n#               ^ punctuation.definition.string.end.terraform\n#                ^^ meta.block.body.terraform\n#                ^ punctuation.section.block.begin.terraform\n#                 ^ punctuation.section.block.end.terraform\n\n    locals {}\n#   ^^^^^^^ meta.block.head.terraform\n#   ^^^^^^ keyword.declaration.terraform\n#          ^^ meta.block.body.terraform\n#          ^ punctuation.section.block.begin.terraform\n#           ^ punctuation.section.block.end.terraform\n\n    terraform {}\n#   ^^^^^^^^^^ meta.block.head.terraform\n#   ^^^^^^^^^ keyword.declaration.terraform\n#             ^^ meta.block.body.terraform\n#             ^ punctuation.section.block.begin.terraform\n#              ^ punctuation.section.block.end.terraform\n\n/////////////////////////////////////////////////////////////////////\n// TERRAFORM TYPE KEYWORDS\n/////////////////////////////////////////////////////////////////////\n\n    string\n#   ^^^^^^ storage.type.terraform\n\n    any\n#   ^^^ storage.type.terraform\n\n    number\n#   ^^^^^^ storage.type.terraform\n\n    bool\n#   ^^^^ storage.type.terraform\n\n/////////////////////////////////////////////////////////////////////\n// HEREDOCS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Basic example.\n/////\n    << EOF\n#   ^^ keyword.operator.heredoc.terraform\n#      ^^^ keyword.control.heredoc.terraform\n    sdfdfsd\n#   ^^^^^^^^ string.unquoted.heredoc.terraform\n    EOF\n#   ^^^^ keyword.control.heredoc.terraform\n\n/////\n// With leading-spaces-operator.\n/////\n\n    <<- END\n#   ^^^ keyword.operator.heredoc.terraform\n#       ^^^ keyword.control.heredoc.terraform\n    heredoc\n#   ^^^^^^^^ string.unquoted.heredoc.terraform\n    EOF\n#   ^^^^ string.unquoted.heredoc.terraform\n    END\n#   ^^^^ keyword.control.heredoc.terraform\n\n/////\n// Includes string interpolation.\n/////\n\n    <<- END\n#   ^^^ keyword.operator.heredoc.terraform\n#       ^^^ keyword.control.heredoc.terraform\n    Hello, %{var.name}\n#^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform\n#^^^^^^^^^^ string.unquoted.heredoc.terraform\n#          ^^^^^^^^^^^ meta.interpolation.terraform\n#          ^^ punctuation.section.interpolation.begin.terraform\n#            ^^^^^^^^ source.terraform\n#            ^^^ variable.language.terraform\n#               ^ punctuation.accessor.dot.terraform\n#                ^^^^ variable.other.member.terraform\n#                    ^ punctuation.section.interpolation.end.terraform\n    END\n#   ^^^^ keyword.control.heredoc.terraform\n\n    <<__EOF__\n#   ^^ keyword.operator.heredoc.terraform\n#     ^^^^^^^ keyword.control.heredoc.terraform\n    aaa\n    __EOF__\n#   ^^^^^^^^ keyword.control.heredoc.terraform\n/////////////////////////////////////////////////////////////////////\n// IMPORTS\n/////////////////////////////////////////////////////////////////////\n\n/////\n// Import with attribute access.\n/////\n\n    terraform import aws_instance.example i-abcd1234\n#   ^^^^^^^^^ support.constant.terraform\n#             ^^^^^^ keyword.control.import.terraform\n#                    ^^^^^^^^^^^^ entity.name.label.terraform\n#                                ^ punctuation.accessor.dot.terraform\n#                                 ^^^^^^^ variable.other.member.terraform\n#                                         ^^^^^^^^^^ entity.name.label.terraform\n\n/////\n// Import with numeric literals.\n/////\n\n    terraform import digitalocean_ssh_key.mykey 263654\n#   ^^^^^^^^^ support.constant.terraform\n#             ^^^^^^ keyword.control.import.terraform\n#                    ^^^^^^^^^^^^^^^^^^^^ entity.name.label.terraform\n#                                        ^ punctuation.accessor.dot.terraform\n#                                         ^^^^^ variable.other.member.terraform\n#                                               ^^^^^^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n\n\nresource \"aws_iam_role_policy\" \"attach-inline-policy-1\" {\n    name = \"xxx\"\n    role = aws_iam_role.execution-role.name\n\n    res_arn = \"arn:aws:lambda:*:*:function:${var.environment}-xxx\"\n#             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform meta.string.terraform\n#             ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform - variable\n#              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.language.acl.terraform\n#                                          ^^ punctuation.section.interpolation.begin.terraform\n#                                            ^^^^^^^^^^^^^^^ source.terraform source.terraform\n#                                            ^^^ variable.language.terraform\n#                                               ^ punctuation.accessor.dot.terraform\n#                                                ^^^^^^^^^^^ variable.other.member.terraform\n#                                                           ^ punctuation.section.interpolation.end.terraform\n#                                                                ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - variable\n\n    policy = jsonencode({\n        Version = \"2012-10-17\"\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform meta.function-call.arguments.terraform meta.braces.terraform\n#       ^^^^^^^ meta.mapping.key.terraform string.unquoted.terraform\n#               ^ keyword.operator.assignment.terraform\n#                 ^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform\n#                 ^ punctuation.definition.string.begin.terraform\n#                            ^ punctuation.definition.string.end.terraform\n        # comment\n#       ^^^^^^^^^^ comment.line.terraform\n        \"Statement\": [\n#^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform meta.function-call.arguments.terraform\n#^^^^^^^ meta.braces.terraform\n#       ^^^^^^^^^^^ meta.mapping.key.json string.quoted.double.json\n#       ^ punctuation.definition.string.begin.json\n#                 ^ punctuation.definition.string.end.json\n#                  ^^ meta.braces.terraform\n#                  ^ punctuation.separator.key-value.json\n#                    ^ meta.mapping.value.json meta.sequence.json punctuation.section.sequence.begin.json\n            # comment\n#           ^^^^^^^^^^ comment.line.terraform\n            {\n                \"Action\": [\n                    \"lambda:InvokeFunction\",\n                    \"lambda:InvokeAsync\"\n                ],\n                \"Resource\": \"arn:aws:lambda:*:*:function:${var.environment}-xxx\",\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform meta.function-call.arguments.terraform meta.mapping.value.json meta.sequence.json\n#^^^^^^^^^^^^^^^ meta.mapping.json\n#               ^^^^^^^^^^ meta.mapping.key.json string.quoted.double.json\n#                         ^^ meta.mapping.json\n#                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping.value.json meta.string.json - meta.interpolation\n#                                                        ^^^^^^^^^^^^^^^^^^ meta.mapping.value.json meta.string.json meta.interpolation.terraform - string\n#                                                                          ^^^^^ meta.mapping.value.json meta.string.json - meta.interpolation\n#                                                                               ^ meta.mapping.json\n#               ^ punctuation.definition.string.begin.json\n#                        ^ punctuation.definition.string.end.json\n#                         ^ punctuation.separator.key-value.json\n#                           ^ string.quoted.double.json punctuation.definition.string.begin.json - variable\n#                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.language.acl.terraform\n#                                                        ^^ punctuation.section.interpolation.begin.terraform\n#                                                          ^^^^^^^^^^^^^^^ source.terraform source.terraform\n#                                                          ^^^ variable.language.terraform\n#                                                             ^ punctuation.accessor.dot.terraform\n#                                                              ^^^^^^^^^^^ variable.other.member.terraform\n#                                                                         ^ punctuation.section.interpolation.end.terraform\n#                                                                              ^ string.quoted.double.json  punctuation.definition.string.end.json - variable\n#                                                                               ^ punctuation.separator.sequence.json\n\n                \"IP\": \"1.2.3.4\",\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.body.terraform meta.function-call.arguments.terraform meta.parens.terraform meta.mapping.value.json meta.sequence.json\n#^^^^^^^^^^^^^^^ meta.mapping.json\n#               ^^^^ meta.mapping.key.json string.quoted.double.json\n#               ^ punctuation.definition.string.begin.json\n#                  ^ punctuation.definition.string.end.json\n#                   ^^ meta.mapping.json\n#                   ^ punctuation.separator.key-value.json\n#                     ^^^^^^^^^ meta.mapping.value.json meta.string.terraform string.quoted.double.terraform\n#                     ^ punctuation.definition.string.begin.terraform\n#                      ^^^^^^^ meta.number.integer.other.terraform constant.numeric.ip-address.v4.terraform\n#                             ^ punctuation.definition.string.end.terraform\n#                              ^ meta.mapping.json punctuation.separator.sequence.json\n                \"Effect\": \"Allow\"\n            }\n        ]\n    })\n}\n\n]\n# <- invalid.illegal.stray.terraform\n\n}\n# <- invalid.illegal.stray.terraform\n\n)\n# <- invalid.illegal.stray.terraform\n"
  },
  {
    "path": "tests/syntax_test_scope.tfplan",
    "content": "# SYNTAX TEST \"Terraform Plan.sublime-syntax\"\n\nTerraform used the selected providers to generate the following execution\nplan. Resource actions are indicated with the following symbols:\n\n+   create\n!   update-in-place\n-   destroy\n-/+ destroy and then create replacement\n\nTerraform will perform the following actions:\n\n  # aws_route53_record_cname_autodiscover_example_com must be replaced\n-/+ resource \"aws_route53_record\" \"cname_autodiscover_example_com\" {\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.changed.destroyed-then-created.diff\n#^^ punctuation.definition.changed.diff\n+       allow_overwrite = (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.inserted.diff - markup markup\n#                         ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n!       fqdn            = \"autodiscover.example.com\" -> (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.changed.updated-in-place.diff\n#                                                    ^^ keyword.operator.assignment.terraform\n#                                                       ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n!       id              = \"ABCDEABCDEABCDEA_autodiscover_CNAME\" -> (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.changed.updated-in-place.diff\n#                                                               ^^ keyword.operator.assignment.terraform\n#                                                                  ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n!       name            = \"autodiscover.example.com\" -> (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.changed.updated-in-place.diff\n#                                                    ^^ keyword.operator.assignment.terraform\n#                                                       ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n        # (4 unchanged attributes hidden)\n# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - markup\n    }\n#^^^^ markup.changed.diff\n\n  # aws_route53_record_cname_lyncdiscover_example_com will be destroyed\n-   resource \"aws_route53_record\" \"cname_lyncdiscover_example_com_old\" {\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.deleted.diff\n-       fqdn    = \"lyncdiscover.example.com\" -> null\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.deleted.diff - markup markup\n#                                            ^^ keyword.operator.assignment.terraform\n#                                               ^^^^ constant.language.null.terraform\n-       id      = \"ABCDEABCDEABCDEA_lyncdiscover_CNAME\" -> null\n-       name    = \"lyncdiscover\" -> null\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.deleted.diff\n#                                ^^ keyword.operator.assignment.terraform\n#                                   ^^^^ constant.language.null.terraform\n-       records = [\n-           \"webdir.online.lync.com.\",\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.deleted.diff\n        ] -> null\n#^^^^^^^^^^^^^^^^ markup.deleted.diff - markup markup\n#         ^^ keyword.operator.assignment.terraform\n#            ^^^^ constant.language.null.terraform\n-       ttl     = 7200 -> null\n-       type    = \"CNAME\" -> null\n-       zone_id = \"ABCDEABCDEABCDEA\" -> null\n    }\n#^^^^ markup.deleted.diff - markup markup\n\n  # aws_route53_record_cname_lyncdiscover_example_com will be created\n+   resource \"aws_route53_record\" \"cname_lyncdiscover_example_com_new\" {\n+       fqdn    = (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.inserted.diff - markup markup\n#                 ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n+       id      = (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.inserted.diff\n#                 ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n+       name    = (known after apply)\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.inserted.diff\n#                 ^^^^^^^^^^^^^^^^^^^ comment.block.terraform\n+       records = [\n+           \"webdir.online.lync.com.\",\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.inserted.diff - markup markup\n        ]\n+       ttl     = 7200\n+       type    = \"CNAME\"\n+       zone_id = \"ABCDEABCDEABCDEA\"\n    }\n#^^^^ markup.inserted.diff - markup markup\n\n  # aws_route53_record_zone_example_com will be updated in-place\n!   resource \"aws_route53_record\" \"cname_autodiscover_example_com\" {\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.changed.updated-in-place.diff\n!       comment       = \"Records for the example.com domain\" -> \"Records for the example.com domains\"\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.changed.updated-in-place.diff\n#                                                            ^^ keyword.operator.assignment.terraform\n        id            = \"ABCDEABCDEABCDEA\"\n        name          = \"example.com\"\n        tags          = {\n#^^^^^^^^^^^^^^^^^^^^^^^^ - markup\n            \"Provisioner\" = \"Terraform\"\n            \"System\"      = \"example\"\n            \"Workspace\"   = \"production\"\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - markup\n        }\n#^^^^^^^^ - markup\n        # (3 unchanged attributes hidden)\n    }\n#^^^^ markup.changed.diff - markup markup\n\nPlan: 2 to add, 1 to change, 2 to destroy.\n#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.summary.terraform\n#     ^^^^^^^^ markup.inserted.terraform\n#     ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#             ^ punctuation.separator.sequence.terraform\n#               ^^^^^^^^^^^ markup.changed.terraform\n#               ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                          ^ punctuation.separator.sequence.terraform\n#                            ^^^^^^^^^^^^ markup.deleted.terraform\n#                            ^ meta.number.integer.decimal.terraform constant.numeric.value.terraform\n#                                        ^ punctuation.terminator.terraform\n"
  },
  {
    "path": "tests/syntax_test_scope.tfvars",
    "content": "# SYNTAX TEST \"Terraform-vars.sublime-syntax\"\n\n# Same as normal Terraform syntax, hence nothing special to test here.\n# <- source.terraform-vars\n"
  },
  {
    "path": "tests/syntax_test_symbol.tf",
    "content": "# SYNTAX TEST \"Terraform.sublime-syntax\"\n\n terraform {\n#@@@@@@@@@ local-definition\n  backend \"gcs\" {\n# @@@@@@@@@@@@@ local-definition\n    prefix = \"minecraft/state\"\n    bucket = \"terraform-larkworthy\"\n  }\n}\n\n# You need to fill these locals out with the project, region and zone\n# Then to boot it up, run:-\n#   gcloud auth application-default login\n#   terraform init\n#   terraform apply\n locals {\n#@@@@@@ local-definition\n  # The Google Cloud Project ID that will host and pay for your Minecraft server\n  project = \"larkworthy-tester\"\n  region  = \"europe-west1\"\n  zone    = \"europe-west1-b\"\n  # Allow members of an external Google group to turn on the server\n  # through the Cloud Console mobile app or https://console.cloud.google.com\n  # Create a group at https://groups.google.com/forum/#!creategroup\n  # and invite members by their email address.\n  enable_switch_access_group = 1\n  minecraft_switch_access_group = \"minecraft-switchers-lark@googlegroups.com\"\n}\n\n\n provider \"google\" {\n#@@@@@@@@@@@@@@@@@ local-definition\n#          @@@@@@ global-definition\n  project = local.project\n  region  = local.region\n}\n\n# Create service account to run service with no permissions\n resource \"google_service_account\" \"minecraft\" {\n#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ local-definition\n#                                   @@@@@@@@@ global-definition\n  account_id   = \"minecraft\"\n  display_name = <<EOT\nhello\nworld\nEOT\n  test = \"Hello, %{ if var.name != \"\" }${var.name}%{ else }unnamed%{ endif }!\"\n  x = <<EOT\n%{ for ip in aws_instance.example[*].private_ip ~}\nserver ${ip}\n%{ endfor }\nEOT\n}\n\n    provider \"name\" {}\n#   @@@@@@@@@@@@@@@ local-definition\n#             @@@@ global-definition\n"
  }
]