Full Code of Ne0nd0g/merlin-agent for AI

main c4571f4dda22 cached
127 files
1.5 MB
354.0k tokens
699 symbols
1 requests
Download .txt
Showing preview only (1,590K chars total). Download the full file or copy to clipboard to get everything.
Repository: Ne0nd0g/merlin-agent
Branch: main
Commit: c4571f4dda22
Files: 127
Total size: 1.5 MB

Directory structure:
gitextract_varw5met/

├── .gitattributes
├── .github/
│   └── workflows/
│       ├── build.yml
│       ├── codeql.yml
│       ├── qodana.yml
│       ├── qodana_pr.yml
│       └── release.yml
├── .gitignore
├── .qodana/
│   └── qodana.sarif.json
├── LICENSE
├── Makefile
├── README.md
├── agent/
│   ├── agent.go
│   ├── memory/
│   │   └── memory.go
│   ├── repository.go
│   └── structs.go
├── authenticators/
│   ├── authenticaters.go
│   ├── none/
│   │   └── none.go
│   ├── opaque/
│   │   └── opaque.go
│   └── rsa/
│       └── rsa.go
├── cli/
│   └── cli.go
├── clients/
│   ├── clients.go
│   ├── http/
│   │   ├── http.go
│   │   └── http_exclude.go
│   ├── memory/
│   │   └── memory.go
│   ├── mythic/
│   │   ├── mythic.go
│   │   └── structs.go
│   ├── repository.go
│   ├── smb/
│   │   ├── smb.go
│   │   └── smb_windows.go
│   ├── tcp/
│   │   ├── tcp.go
│   │   └── tcp_exclude.go
│   └── udp/
│       ├── udp.go
│       └── udp_exclude.go
├── commands/
│   ├── clr.go
│   ├── clr_windows.go
│   ├── download.go
│   ├── env.go
│   ├── exec.go
│   ├── exec_windows.go
│   ├── execute.go
│   ├── ifconfig.go
│   ├── ifconfig_windows.go
│   ├── link.go
│   ├── listener.go
│   ├── memfd.go
│   ├── memfd_linux.go
│   ├── memory.go
│   ├── memory_windows.go
│   ├── modules.go
│   ├── native.go
│   ├── netstat.go
│   ├── netstat_windows.go
│   ├── os.go
│   ├── os_windows.go
│   ├── pipes.go
│   ├── pipes_windows.go
│   ├── ps.go
│   ├── ps_windows.go
│   ├── runas.go
│   ├── runas_windows.go
│   ├── shell.go
│   ├── shell_darwin.go
│   ├── shell_freebsd.go
│   ├── shell_linux.go
│   ├── shell_windows.go
│   ├── shellcode.go
│   ├── smb.go
│   ├── smb_windows.go
│   ├── ssh.go
│   ├── tokens.go
│   ├── tokens_windows.go
│   ├── unlink.go
│   ├── upload.go
│   ├── uptime.go
│   └── uptime_windows.go
├── core/
│   └── core.go
├── docs/
│   ├── CHANGELOG.MD
│   ├── ISSUE_TEMPLATE.md
│   └── PULL_REQUEST_TEMPLATE.md
├── go.mod
├── go.sum
├── http/
│   ├── http.go
│   ├── http1/
│   │   ├── http1.go
│   │   └── http1_exclude.go
│   ├── http2/
│   │   ├── http2.go
│   │   └── http2_exclude.go
│   ├── http3/
│   │   ├── http3.go
│   │   └── http3_exclude.go
│   ├── proxy/
│   │   └── proxy.go
│   ├── utls/
│   │   └── utls.go
│   └── winhttp/
│       ├── winhttp_exclude.go
│       └── winhttp_windows.go
├── main.go
├── os/
│   ├── os.go
│   ├── os_windows.go
│   └── windows/
│       ├── README.MD
│       ├── api/
│       │   ├── advapi32/
│       │   │   └── advapi32.go
│       │   ├── kernel32/
│       │   │   └── kernel32.go
│       │   ├── ntdll/
│       │   │   └── ntdll.go
│       │   └── user32/
│       │       └── user32.go
│       └── pkg/
│           ├── evasion/
│           │   ├── evasion.go
│           │   └── evasion_386.go
│           ├── pipes/
│           │   └── pipes.go
│           ├── processes/
│           │   └── processes.go
│           ├── text/
│           │   └── text.go
│           └── tokens/
│               └── tokens.go
├── p2p/
│   ├── memory/
│   │   └── memory.go
│   ├── p2p.go
│   └── repository.go
├── qodana.yaml
├── run/
│   └── run.go
├── services/
│   ├── agent/
│   │   └── agent.go
│   ├── client/
│   │   └── client.go
│   ├── job/
│   │   └── job.go
│   ├── message/
│   │   └── message.go
│   ├── p2p/
│   │   └── p2p.go
│   └── services.go
├── socks/
│   └── socks.go
└── transformers/
    ├── encoders/
    │   ├── base64/
    │   │   └── base64.go
    │   ├── gob/
    │   │   └── gob.go
    │   ├── hex/
    │   │   └── hex.go
    │   └── mythic/
    │       └── mythic.go
    ├── encrypters/
    │   ├── aes/
    │   │   └── aes.go
    │   ├── jwe/
    │   │   └── jwe.go
    │   ├── rc4/
    │   │   └── rc4.go
    │   └── xor/
    │       └── xor.go
    └── transformer.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.go linguist-language=Go

================================================
FILE: .github/workflows/build.yml
================================================
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: "Merlin Agent Build & Test"

on:
  workflow_dispatch:
  push:
    paths-ignore:
      - '.github/**'
      - 'docs/**'
      - '.gitattributes'
      - '.gitignore'
      - 'LICENSE'
      - 'README.MD'
  pull_request:
    paths-ignore:
      - '.github/**'
      - 'docs/**'
      - '.gitattributes'
      - '.gitignore'
      - 'LICENSE'
      - 'README.MD'

jobs:
  build:
    name: 'Build Job'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        id: checkout
        uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: '1.21'
          check-latest: true

      - name: 'Test Merlin Agent'
        id: test
        run: 'go test ./...'

      - name: 'Build Merlin Agent'
        id: build
        run: 'make all'


================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#

# This is "Advanced" because it is using this codeql.yml workflow and not using GitHub's built-in "Default" CodeQL workflow
name: "CodeQL Advanced"

on:
  workflow_dispatch:
  push:
    paths-ignore:
      - '.github/**'
      - 'docs/**'
      - '.gitattributes'
      - '.gitignore'
      - 'go.mod'
      - 'go.sum'
      - 'LICENSE'
      - 'Makefile'
      - 'README.MD'
  pull_request:
    branches: [ "main", "dev" ]
    paths-ignore:
      - '.github/**'
      - 'docs/**'
      - '.gitattributes'
      - '.gitignore'
      - 'go.mod'
      - 'go.sum'
      - 'LICENSE'
      - 'Makefile'
      - 'README.MD'
  schedule:
    - cron: '32 7 * * 4'

jobs:
  analyze:
    name: Analyze
    # Runner size impacts CodeQL analysis time. To learn more, please see:
    #   - https://gh.io/recommended-hardware-resources-for-running-codeql
    #   - https://gh.io/supported-runners-and-hardware-resources
    #   - https://gh.io/using-larger-runners
    # Consider using larger runners for possible analysis time improvements.
    runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
    timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'go' ]
        # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
        # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
        # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
        # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v3
      with:
        languages: ${{ matrix.language }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.

        # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
        # queries: security-extended,security-and-quality

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3
      with:
        category: "/language:${{matrix.language}}"

    - name: GoVulnCheck
      id: govulncheck
      uses: golang/govulncheck-action@v1
      with:
        go-package: './...'

    - name: Gosec Security Scanner
      id: gosec
      uses: securego/gosec@master
      with:
        args: ./...

    - name: Go Report Card - Install
      id: goreportcard_install
      working-directory: /tmp
      run: |
        git clone https://github.com/gojp/goreportcard.git
        cd goreportcard
        make install
        go install ./cmd/goreportcard-cli

    - name: Go Report Card - Run
      id: goreportcard_run
      run: 'goreportcard-cli -v' # This renames the files in the ./rpc directory to *.grc.bak causing builds to fail

================================================
FILE: .github/workflows/qodana.yml
================================================
name: "Qodana: Push"
on:
  workflow_dispatch:
  push:
    paths-ignore:
      - '.github/**'
      - '.qodana/**'
      - 'docs/**'
      - '.gitattributes'
      - '.gitignore'
      - 'Dockerfile'
      - 'go.mod'
      - 'go.sum'
      - 'LICENSE'
      - 'Makefile'
      - 'qodana.yaml'
      - 'README.MD'

jobs:
  qodana:
    name: 'Qodana Job'
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      checks: write
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}  # to check out the actual pull request commit, not the merge commit
          fetch-depth: 0  # a full history is required for pull request analysis
      - name: 'Qodana Scan'
        uses: JetBrains/qodana-action@v2023.3
        env:
          QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
        with:
          args: --baseline,.qodana/qodana.sarif.json


================================================
FILE: .github/workflows/qodana_pr.yml
================================================
name: "Qodana: Pull Request"

on:
  workflow_dispatch:
  pull_request:
    paths-ignore:
      - '.github/**'
      - '.qodana/**'
      - 'data/**'
      - 'docs/**'
      - '.gitattributes'
      - '.gitignore'
      - '.gitmodules'
      - 'Dockerfile'
      - 'LICENSE'
      - 'Makefile'
      - 'qodana.yaml'
      - 'README.MD'

jobs:
  qodana:
    name: 'Qodana Job'
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      checks: write
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}  # to check out the actual pull request commit, not the merge commit
          fetch-depth: 0  # a full history is required for pull request analysis
      - name: 'Qodana Scan'
        uses: JetBrains/qodana-action@v2023.3
        with:
          args: -l,jetbrains/qodana-go:2023.3-eap,--baseline,.qodana/qodana.sarif.json
          pr-mode: false

================================================
FILE: .github/workflows/release.yml
================================================
name: "Merlin Agent Release"

on:
  workflow_dispatch:
  push:
    branches:
      - "main"
    tags:
      - 'v*.*.*'

jobs:
  release:
    name: 'Release Job'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        id: checkout
        uses: actions/checkout@v4

      - name: Set up Go
        id: setup_go
        uses: actions/setup-go@v4
        with:
          go-version: '1.21'
          check-latest: true

      - name: Install 7zip
        id: install_7zip
        run: sudo apt-get install p7zip-full

      - name: Make Distribution
        id: make_distro
        run: make distro

      - name: Create Draft Release
        id: create_draft_release
        uses: ncipollo/release-action@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag: ${{ github.ref_name }}
          name: ${{ github.ref_name }}
          draft: true
          prerelease: false
          artifactErrorsFailBuild: true
          artifacts: '*.7z'

================================================
FILE: .gitignore
================================================
.DS_STORE
.idea/
agent/data
bin

================================================
FILE: .qodana/qodana.sarif.json
================================================
{
  "$schema": "https://raw.githubusercontent.com/schemastore/schemastore/master/src/schemas/json/sarif-2.1.0-rtm.5.json",
  "version": "2.1.0",
  "runs": [
    {
      "tool": {
        "driver": {
          "name": "QDGO",
          "fullName": "Qodana for Go",
          "version": "233.13017.73",
          "rules": [],
          "taxa": [
            {
              "id": "JavaScript and TypeScript",
              "name": "JavaScript and TypeScript"
            },
            {
              "id": "JavaScript and TypeScript/Control flow issues",
              "name": "Control flow issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "EditorConfig",
              "name": "EditorConfig"
            },
            {
              "id": "Go",
              "name": "Go"
            },
            {
              "id": "Go/Probable bugs",
              "name": "Probable bugs",
              "relationships": [
                {
                  "target": {
                    "id": "Go",
                    "index": 3,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Go/Declaration redundancy",
              "name": "Declaration redundancy",
              "relationships": [
                {
                  "target": {
                    "id": "Go",
                    "index": 3,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Shell script",
              "name": "Shell script"
            },
            {
              "id": "JavaScript and TypeScript/Unit testing",
              "name": "Unit testing",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JSON and JSON5",
              "name": "JSON and JSON5"
            },
            {
              "id": "JavaScript and TypeScript/General",
              "name": "General",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Code style issues",
              "name": "Code style issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
              "name": "Potentially undesirable code constructs",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Flow type checker",
              "name": "Flow type checker",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Probable bugs",
              "name": "Probable bugs",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "HTML",
              "name": "HTML"
            },
            {
              "id": "JavaScript and TypeScript/Unused symbols",
              "name": "Unused symbols",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Data flow",
              "name": "Data flow",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Bitwise operation issues",
              "name": "Bitwise operation issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/ES2015 migration aids",
              "name": "ES2015 migration aids",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "General",
              "name": "General"
            },
            {
              "id": "HTML/Accessibility",
              "name": "Accessibility",
              "relationships": [
                {
                  "target": {
                    "id": "HTML",
                    "index": 14,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/React",
              "name": "React",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/TypeScript",
              "name": "TypeScript",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Validity issues",
              "name": "Validity issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Potentially confusing code constructs",
              "name": "Potentially confusing code constructs",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "CSS",
              "name": "CSS"
            },
            {
              "id": "CSS/Invalid elements",
              "name": "Invalid elements",
              "relationships": [
                {
                  "target": {
                    "id": "CSS",
                    "index": 25,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Try statement issues",
              "name": "Try statement issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Structural search",
              "name": "Structural search"
            },
            {
              "id": "JavaScript and TypeScript/Function metrics",
              "name": "Function metrics",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Dependency analysis",
              "name": "Dependency analysis"
            },
            {
              "id": "Go/Code style issues",
              "name": "Code style issues",
              "relationships": [
                {
                  "target": {
                    "id": "Go",
                    "index": 3,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "YAML",
              "name": "YAML"
            },
            {
              "id": "XML",
              "name": "XML"
            },
            {
              "id": "JavaScript and TypeScript/Assignment issues",
              "name": "Assignment issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "CSS/Code style issues",
              "name": "Code style issues",
              "relationships": [
                {
                  "target": {
                    "id": "CSS",
                    "index": 25,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Go/Security",
              "name": "Security",
              "relationships": [
                {
                  "target": {
                    "id": "Go",
                    "index": 3,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "RegExp",
              "name": "RegExp"
            },
            {
              "id": "Go/General",
              "name": "General",
              "relationships": [
                {
                  "target": {
                    "id": "Go",
                    "index": 3,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Node.js",
              "name": "Node.js",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Go Template",
              "name": "Go Template"
            },
            {
              "id": "Go Template/General",
              "name": "General",
              "relationships": [
                {
                  "target": {
                    "id": "Go Template",
                    "index": 40,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Imports and dependencies",
              "name": "Imports and dependencies",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "RELAX NG",
              "name": "RELAX NG"
            },
            {
              "id": "Code Coverage",
              "name": "Code Coverage"
            },
            {
              "id": "CSS/Probable bugs",
              "name": "Probable bugs",
              "relationships": [
                {
                  "target": {
                    "id": "CSS",
                    "index": 25,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Naming conventions",
              "name": "Naming conventions",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Switch statement issues",
              "name": "Switch statement issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/DOM issues",
              "name": "DOM issues",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Async code and promises",
              "name": "Async code and promises",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Go/Control flow issues",
              "name": "Control flow issues",
              "relationships": [
                {
                  "target": {
                    "id": "Go",
                    "index": 3,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "JavaScript and TypeScript/Code quality tools",
              "name": "Code quality tools",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Proofreading",
              "name": "Proofreading"
            },
            {
              "id": "Go modules",
              "name": "Go modules"
            },
            {
              "id": "Go modules/Declaration redundancy",
              "name": "Declaration redundancy",
              "relationships": [
                {
                  "target": {
                    "id": "Go modules",
                    "index": 53,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Security",
              "name": "Security"
            },
            {
              "id": "CSS/Code quality tools",
              "name": "Code quality tools",
              "relationships": [
                {
                  "target": {
                    "id": "CSS",
                    "index": 25,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Go modules/Dependency issues (go list -m -u)",
              "name": "Dependency issues (go list -m -u)",
              "relationships": [
                {
                  "target": {
                    "id": "Go modules",
                    "index": 53,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Go modules/General",
              "name": "General",
              "relationships": [
                {
                  "target": {
                    "id": "Go modules",
                    "index": 53,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Qodana",
              "name": "Qodana"
            },
            {
              "id": "JavaScript and TypeScript/Security",
              "name": "Security",
              "relationships": [
                {
                  "target": {
                    "id": "JavaScript and TypeScript",
                    "index": 0,
                    "toolComponent": {
                      "name": "QDGO"
                    }
                  },
                  "kinds": [
                    "superset"
                  ]
                }
              ]
            },
            {
              "id": "Internationalization",
              "name": "Internationalization"
            },
            {
              "id": "Version control",
              "name": "Version control"
            }
          ],
          "language": "en-US",
          "contents": [
            "localizedData",
            "nonLocalizedData"
          ],
          "isComprehensive": false
        },
        "extensions": [
          {
            "name": "JavaScript",
            "version": "233.13017",
            "rules": [
              {
                "id": "ConstantConditionalExpressionJS",
                "shortDescription": {
                  "text": "Constant conditional expression"
                },
                "fullDescription": {
                  "text": "Reports a conditional expression in the format 'true? result1: result2' or 'false? result1: result2. Suggests simplifying the expression.'",
                  "markdown": "Reports a conditional expression in the format `true? result1: result2` or `false? result1: result2``.\nSuggests simplifying the expression.\n`"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ConstantConditionalExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSTestFailedLine",
                "shortDescription": {
                  "text": "Highlight failure line in test code"
                },
                "fullDescription": {
                  "text": "Reports a failed method call or an assertion in a test.",
                  "markdown": "Reports a failed method call or an assertion in a test."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSTestFailedLine",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Unit testing",
                      "index": 7,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "IfStatementWithTooManyBranchesJS",
                "shortDescription": {
                  "text": "'if' statement with too many branches"
                },
                "fullDescription": {
                  "text": "Reports an 'if' statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction. Use the field below to specify the maximum number of branches expected.",
                  "markdown": "Reports an `if` statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction.\n\n\nUse the field below to specify the maximum number of branches expected."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "IfStatementWithTooManyBranchesJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSValidateJSDoc",
                "shortDescription": {
                  "text": "Syntax errors and unresolved references in JSDoc"
                },
                "fullDescription": {
                  "text": "Reports a syntax discrepancy in a documentation comment.",
                  "markdown": "Reports a syntax discrepancy in a documentation comment."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSValidateJSDoc",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "NonBlockStatementBodyJS",
                "shortDescription": {
                  "text": "Statement body without braces"
                },
                "fullDescription": {
                  "text": "Reports a 'if', 'while', 'for', or 'with' statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance.",
                  "markdown": "Reports a `if`, `while`, `for`, or `with` statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "NonBlockStatementBodyJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Code style issues",
                      "index": 10,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "BreakStatementJS",
                "shortDescription": {
                  "text": "'break' statement"
                },
                "fullDescription": {
                  "text": "Reports a 'break' statements. Ignores 'break' statements that end case blocks.",
                  "markdown": "Reports a `break` statements. Ignores `break` statements that end case blocks."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "BreakStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "FlowJSConfig",
                "shortDescription": {
                  "text": "Missing .flowconfig"
                },
                "fullDescription": {
                  "text": "Reports a JavaScript file with a '@flow' flag that doesn't have an associated '.flowconfig' file in the project.",
                  "markdown": "Reports a JavaScript file with a `@flow` flag that doesn't have an associated `.flowconfig` file in the project."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "FlowJSConfig",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Flow type checker",
                      "index": 12,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSPotentiallyInvalidUsageOfClassThis",
                "shortDescription": {
                  "text": "Potentially invalid reference to 'this' of a class from closure"
                },
                "fullDescription": {
                  "text": "Reports an attempt to reference a member of an ECMAScript class via the 'this.' qualifier in a nested function that is not a lambda. 'this' in a nested function that is not a lambda is the function's own 'this' and doesn't relate to the outer class.",
                  "markdown": "Reports an attempt to reference a member of an ECMAScript class via the `this.` qualifier in a nested function that is not a lambda.  \n`this` in a nested function that is not a lambda is the function's own `this` and doesn't relate to the outer class."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSPotentiallyInvalidUsageOfClassThis",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "DebuggerStatementJS",
                "shortDescription": {
                  "text": "'debugger' statement"
                },
                "fullDescription": {
                  "text": "Reports a 'debugger' statement used for interaction with the Javascript debuggers. Such statements should not appear in production code.",
                  "markdown": "Reports a `debugger` statement used for interaction with the Javascript debuggers. Such statements should not appear in production code."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "DebuggerStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSUnusedAssignment",
                "shortDescription": {
                  "text": "Unused assignment"
                },
                "fullDescription": {
                  "text": "Reports a variable whose value is never used after assignment. Suggests removing the unused variable to shorten the code and to avoid redundant allocations. The following cases are reported: A variable is never read after assignment. The value of a variable is always overwritten with another assignment before the variable is read next time. The initializer of a variable is redundant (for one of the above-mentioned reasons).",
                  "markdown": "Reports a variable whose value is never used after assignment.  \nSuggests removing the unused variable to shorten the code and to avoid redundant allocations.\n\nThe following cases are reported:\n\n* A variable is never read after assignment.\n* The value of a variable is always overwritten with another assignment before the variable is read next time.\n* The initializer of a variable is redundant (for one of the above-mentioned reasons)."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSUnusedAssignment",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Unused symbols",
                      "index": 15,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "FlowJSError",
                "shortDescription": {
                  "text": "Flow type checker"
                },
                "fullDescription": {
                  "text": "Reports errors from Flow.",
                  "markdown": "Reports errors from [Flow](https://flowtype.org/)."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "FlowJSError",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Flow type checker",
                      "index": 12,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ReuseOfLocalVariableJS",
                "shortDescription": {
                  "text": "Reuse of local variable"
                },
                "fullDescription": {
                  "text": "Reports reusing a local variable and overwriting its value with a new value that is not related to the original variable usage. Reusing a local variable in this way may be confusing because the intended semantics of the local variable may vary with each usage. It may also cause bugs, if code changes result in values that were expected to be overwritten while they are actually live. It is good practices to keep variable lifetimes as short as possible, and not reuse local variables for the sake of brevity.",
                  "markdown": "Reports reusing a local variable and overwriting its value with a new value that is not related to the original variable usage. Reusing a local variable in this way may be confusing because the intended semantics of the local variable may vary with each usage. It may also cause bugs, if code changes result in values that were expected to be overwritten while they are actually live. It is good practices to keep variable lifetimes as short as possible, and not reuse local variables for the sake of brevity."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ReuseOfLocalVariableJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Data flow",
                      "index": 16,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ShiftOutOfRangeJS",
                "shortDescription": {
                  "text": "Shift operation by possibly wrong constant"
                },
                "fullDescription": {
                  "text": "Reports a shift operation where the second operand is a constant outside the reasonable range, for example, an integer shift operation outside the range '0..31', shifting by negative or overly large values.",
                  "markdown": "Reports a shift operation where the second operand is a constant outside the reasonable range, for example, an integer shift operation outside the range `0..31`, shifting by negative or overly large values."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ShiftOutOfRangeJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Bitwise operation issues",
                      "index": 17,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSClosureCompilerSyntax",
                "shortDescription": {
                  "text": "Incorrect usage of JSDoc tags"
                },
                "fullDescription": {
                  "text": "Reports warnings implied by Google Closure Compiler annotations including correct use of '@abstract', '@interface', and '@implements' tags.",
                  "markdown": "Reports warnings implied by *Google Closure Compiler* annotations including correct use of `@abstract`, `@interface`, and `@implements` tags."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSClosureCompilerSyntax",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "UnnecessaryContinueJS",
                "shortDescription": {
                  "text": "Unnecessary 'continue' statement"
                },
                "fullDescription": {
                  "text": "Reports an unnecessary 'continue' statement at the end of a loop. Suggests removing such statements.",
                  "markdown": "Reports an unnecessary `continue` statement at the end of a loop. Suggests removing such statements."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "UnnecessaryContinueJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ConvertLetToConst",
                "shortDescription": {
                  "text": "'let' is used instead of 'const'"
                },
                "fullDescription": {
                  "text": "Reports a 'let' declaration that can be made 'const'.",
                  "markdown": "Reports a `let` declaration that can be made `const`.  "
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6ConvertLetToConst",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/ES2015 migration aids",
                      "index": 18,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSXDomNesting",
                "shortDescription": {
                  "text": "Invalid DOM element nesting"
                },
                "fullDescription": {
                  "text": "Detects HTML elements in JSX files which are not nested properly according to the DOM specification. React reports runtime warnings on incorrectly nested elements.",
                  "markdown": "Detects HTML elements in JSX files which are not nested properly according to the DOM specification. React reports runtime warnings on incorrectly nested elements."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSXDomNesting",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/React",
                      "index": 21,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptValidateTypes",
                "shortDescription": {
                  "text": "Type mismatch"
                },
                "fullDescription": {
                  "text": "Reports a parameter, return value, or assigned expression of incorrect type.",
                  "markdown": "Reports a parameter, return value, or assigned expression of incorrect type."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "TypeScriptValidateTypes",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "BadExpressionStatementJS",
                "shortDescription": {
                  "text": "Expression statement which is not assignment or call"
                },
                "fullDescription": {
                  "text": "Reports an expression statement that is neither an assignment nor a call. Such statements usually indicate an error.",
                  "markdown": "Reports an expression statement that is neither an assignment nor a call. Such statements usually indicate an error."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "BadExpressionStatementJS",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Validity issues",
                      "index": 23,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ConfusingFloatingPointLiteralJS",
                "shortDescription": {
                  "text": "Confusing floating point literal"
                },
                "fullDescription": {
                  "text": "Reports any floating point number that does not have a decimal point, or any numbers before the decimal point, or and numbers after the decimal point. Such literals may be confusing, and violate several coding standards.",
                  "markdown": "Reports any floating point number that does not have a decimal point, or any numbers before the decimal point, or and numbers after the decimal point. Such literals may be confusing, and violate several coding standards."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ConfusingFloatingPointLiteralJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "BreakStatementWithLabelJS",
                "shortDescription": {
                  "text": "'break' statement with label"
                },
                "fullDescription": {
                  "text": "Reports a labeled 'break' statement.",
                  "markdown": "Reports a labeled `break` statement."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "BreakStatementWithLabelJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ContinueOrBreakFromFinallyBlockJS",
                "shortDescription": {
                  "text": "'continue' or 'break' inside 'finally' block"
                },
                "fullDescription": {
                  "text": "Reports a 'break' or 'continue' statement inside a 'finally' block. Such statements are very confusing, may hide exceptions, and complicate debugging.",
                  "markdown": "Reports a `break` or `continue` statement inside a `finally` block. Such statements are very confusing, may hide exceptions, and complicate debugging."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ContinueOrBreakFromFinallyBlockJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Try statement issues",
                      "index": 27,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "StatementsPerFunctionJS",
                "shortDescription": {
                  "text": "Overly long function"
                },
                "fullDescription": {
                  "text": "Reports an overly long function. Function length is calculated by counting up the number of non-empty statements in the function. Functions that are too long are error-prone and difficult to test. Use the field below to specify the maximum acceptable number of statements in a function.",
                  "markdown": "Reports an overly long function. Function length is calculated by counting up the number of non-empty statements in the function. Functions that are too long are error-prone and difficult to test.\n\n\nUse the field below to specify the maximum acceptable number of statements in a function."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "FunctionTooLongJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Function metrics",
                      "index": 29,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "UnnecessaryLocalVariableJS",
                "shortDescription": {
                  "text": "Redundant local variable"
                },
                "fullDescription": {
                  "text": "Reports an unnecessary local variable that does not make a function more comprehensible: a local variable that is immediately returned a local variable that is immediately assigned to another variable and is not used anymore a local variable that always has the same value as another local variable or parameter. Use the checkbox below to have this inspection ignore variables that are immediately returned or thrown. Some coding styles suggest using such variables for clarity and ease of debugging.",
                  "markdown": "Reports an unnecessary local variable that does not make a function more comprehensible:\n\n* a local variable that is immediately returned\n* a local variable that is immediately assigned to another variable and is not used anymore\n* a local variable that always has the same value as another local variable or parameter.\n\n\nUse the checkbox below to have this inspection ignore variables that are immediately\nreturned or thrown. Some coding styles suggest using such variables for clarity and\nease of debugging."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "UnnecessaryLocalVariableJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Data flow",
                      "index": 16,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSMethodCanBeStatic",
                "shortDescription": {
                  "text": "Method can be made 'static'"
                },
                "fullDescription": {
                  "text": "Reports a class method that can be safely made 'static'. A method can be 'static' if it does not reference any of its class' non-static methods and non-static fields and is not overridden in a subclass. Use the first checkbox below to inspect only 'private' methods.",
                  "markdown": "Reports a class method that can be safely made `static`. A method can be `static` if it does not reference any of its class' non-static methods and non-static fields and is not overridden in a subclass.\n\n\nUse the first checkbox below to inspect only `private` methods."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSMethodCanBeStatic",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSDeclarationsAtScopeStart",
                "shortDescription": {
                  "text": "'var' declared not at the beginning of a function"
                },
                "fullDescription": {
                  "text": "Checks that declarations of local variables declared with var are at the top of a function scope. By default, variable declarations are always moved (\"hoisted\") invisibly to the top of their containing scope when the code is executed. Therefore, declaring them at the top of the scope helps represent this behavior in the code.",
                  "markdown": "Checks that declarations of local variables declared with **var** are at the top of a function scope.   \n\nBy default, variable declarations are always moved (\"hoisted\") invisibly to the top of their containing scope when the code is executed. Therefore, declaring them at the top of the scope helps represent this behavior in the code."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSDeclarationsAtScopeStart",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Code style issues",
                      "index": 10,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ContinueStatementWithLabelJS",
                "shortDescription": {
                  "text": "'continue' statement with label"
                },
                "fullDescription": {
                  "text": "Reports a labeled 'continue' statement.",
                  "markdown": "Reports a labeled `continue` statement."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ContinueStatementWithLabelJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptMissingConfigOption",
                "shortDescription": {
                  "text": "Missing tsconfig.json option "
                },
                "fullDescription": {
                  "text": "Reports a usage that requires an explicit option in 'tsconfig.json'. For example, to use JSX in '.tsx' files, 'tsconfig.json' must contain '\"jsx\"' property.",
                  "markdown": "Reports a usage that requires an explicit option in `tsconfig.json`. For example, to use JSX in `.tsx` files, `tsconfig.json` must contain `\"jsx\"` property."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "TypeScriptMissingConfigOption",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSObjectNullOrUndefined",
                "shortDescription": {
                  "text": "Object is 'null' or 'undefined'"
                },
                "fullDescription": {
                  "text": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is 'undefined' or 'null'.",
                  "markdown": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is `undefined` or `null`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSObjectNullOrUndefined",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSXUnresolvedComponent",
                "shortDescription": {
                  "text": "Unresolved JSX component"
                },
                "fullDescription": {
                  "text": "Reports an unresolved reference to a JSX component. Suggests adding a missing import statement if the referenced component is defined in the project or its dependencies or creating a new component with this name. The template for a new component can be modified in Editor | File and Code Templates.",
                  "markdown": "Reports an unresolved reference to a JSX component. Suggests adding a missing import statement if the referenced component is defined in the project or its dependencies or creating a new component with this name.\n\nThe template for a new component can be modified in Editor \\| File and Code Templates."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSXUnresolvedComponent",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ShorthandObjectProperty",
                "shortDescription": {
                  "text": "Property can be replaced with shorthand"
                },
                "fullDescription": {
                  "text": "Reports an object property that can be converted to ES6 shorthand style and provides a quick-fix to do it. Example: 'var obj = {foo:foo}' After applying the quick-fix the code looks as follows: 'var obj = {foo}'",
                  "markdown": "Reports an object property that can be converted to ES6 shorthand style and provides a quick-fix to do it.\n\nExample:\n\n\n    var obj = {foo:foo}\n\nAfter applying the quick-fix the code looks as follows:\n\n\n    var obj = {foo}\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6ShorthandObjectProperty",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "UnnecessaryLabelOnBreakStatementJS",
                "shortDescription": {
                  "text": "Unnecessary label on 'break' statement"
                },
                "fullDescription": {
                  "text": "Reports a labeled 'break' statement whose labels may be removed without changing the flow of control.",
                  "markdown": "Reports a labeled `break` statement whose labels may be removed without changing the flow of control."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "UnnecessaryLabelOnBreakStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ContinueStatementJS",
                "shortDescription": {
                  "text": "'continue' statement"
                },
                "fullDescription": {
                  "text": "Reports a 'continue' statement.",
                  "markdown": "Reports a `continue` statement."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ContinueStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "AssignmentToForLoopParameterJS",
                "shortDescription": {
                  "text": "Assignment to 'for' loop parameter"
                },
                "fullDescription": {
                  "text": "Reports an assignment to a variable declared as a 'for' loop parameter. Although occasionally intended, this construct can be extremely confusing, and is often a result of an error.",
                  "markdown": "Reports an assignment to a variable declared as a `for` loop parameter. Although occasionally intended, this construct can be extremely confusing, and is often a result of an error."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "AssignmentToForLoopParameterJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Assignment issues",
                      "index": 34,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSPotentiallyInvalidConstructorUsage",
                "shortDescription": {
                  "text": "Potentially invalid constructor usage"
                },
                "fullDescription": {
                  "text": "Reports a usage of a potentially invalid constructor function, for example: a function that is not a constructor after 'new', using a constructor's prototype or calling a constructor without 'new'. A constructor function is assumed to have an upper case name (optional) or have an explicit JSDoc '@constructor' tag.",
                  "markdown": "Reports a usage of a potentially invalid constructor function, for example: a function that is not a constructor after `new`, using a constructor's prototype or calling a constructor without `new`. A constructor function is assumed to have an upper case name (optional) or have an explicit JSDoc `@constructor` tag."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSPotentiallyInvalidConstructorUsage",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "PointlessArithmeticExpressionJS",
                "shortDescription": {
                  "text": "Pointless arithmetic expression"
                },
                "fullDescription": {
                  "text": "Reports an arithmetic expression that include adding or subtracting zero, multiplying by zero or one, division by one, and shift by zero. Such expressions may result from not fully completed automated refactoring.",
                  "markdown": "Reports an arithmetic expression that include adding or subtracting zero, multiplying by zero or one, division by one, and shift by zero. Such expressions may result from not fully completed automated refactoring."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "PointlessArithmeticExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "NodeCoreCodingAssistance",
                "shortDescription": {
                  "text": "Unresolved Node.js APIs"
                },
                "fullDescription": {
                  "text": "Suggests configuring coding assistance for Node.js, for example, 'require' and/or core modules ('path', 'http', 'fs', etc.). See https://nodejs.org/api/ for the complete list.",
                  "markdown": "Suggests configuring coding assistance for Node.js, for example, `require` and/or core modules ('path', 'http', 'fs', etc.).\n\n\nSee <https://nodejs.org/api/> for the complete list."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "NodeCoreCodingAssistance",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Node.js",
                      "index": 39,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSUndeclaredVariable",
                "shortDescription": {
                  "text": "Implicitly declared global JavaScript variable"
                },
                "fullDescription": {
                  "text": "Reports an implicit declaration of a global variable. Example: 'var aaa = 1; // good\n  bbb = 2; // bad, if bbb is not declared with 'var' somewhere'",
                  "markdown": "Reports an implicit declaration of a global variable.\n\nExample:\n\n\n      var aaa = 1; // good\n      bbb = 2; // bad, if bbb is not declared with 'var' somewhere\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSUndeclaredVariable",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "DivideByZeroJS",
                "shortDescription": {
                  "text": "Division by zero"
                },
                "fullDescription": {
                  "text": "Reports division by zero or a remainder by zero.",
                  "markdown": "Reports division by zero or a remainder by zero."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "DivideByZeroJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSPrimitiveTypeWrapperUsage",
                "shortDescription": {
                  "text": "Primitive type object wrapper used"
                },
                "fullDescription": {
                  "text": "Reports an improper usage of a wrapper for primitive types or a property of a primitive type being modified, as in the latter case the assigned value will be lost.",
                  "markdown": "Reports an improper usage of a wrapper for primitive types or a property of a primitive type being modified, as in the latter case the assigned value will be lost."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSPrimitiveTypeWrapperUsage",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptSmartCast",
                "shortDescription": {
                  "text": "Narrowed type"
                },
                "fullDescription": {
                  "text": "Reports a usage of a variable where the variable type is narrowed by a type guard. Note that severity level doesn't affect this inspection.",
                  "markdown": "Reports a usage of a variable where the variable type is narrowed by a type guard. Note that severity level doesn't affect this inspection."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "TypeScriptSmartCast",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ConvertIndexedForToForOf",
                "shortDescription": {
                  "text": "Indexed 'for' is used instead of 'for..of'"
                },
                "fullDescription": {
                  "text": "Reports an indexed 'for' loop used on an array. Suggests replacing it with a 'for..of' loop. 'for..of' loops are introduced in ECMAScript 6 and iterate over 'iterable' objects.",
                  "markdown": "Reports an indexed [for](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for) loop used on an array. Suggests replacing it with a [for..of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) loop.   \n`for..of` loops are introduced in ECMAScript 6 and iterate over `iterable` objects."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6ConvertIndexedForToForOf",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/ES2015 migration aids",
                      "index": 18,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSLastCommaInArrayLiteral",
                "shortDescription": {
                  "text": "Unneeded last comma in array literal"
                },
                "fullDescription": {
                  "text": "Reports a usage of a trailing comma in an array literal. The warning is reported only when the JavaScript language version is set to ECMAScript 5.1. Although trailing commas in arrays are allowed by the specification, some browsers may throw an error when a trailing comma is used. You can configure formatting options for trailing commas in Code Style | JavaScript or TypeScript | Punctuation.",
                  "markdown": "Reports a usage of a trailing comma in an array literal.\n\nThe warning is reported only when the JavaScript language version is set to ECMAScript 5.1.\n\nAlthough trailing commas in arrays are allowed by the specification, some browsers may throw an error when a trailing comma is used.\n\nYou can configure formatting options for trailing commas in **Code Style** \\| **JavaScript** or **TypeScript** \\| **Punctuation**."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSLastCommaInArrayLiteral",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ConditionalExpressionJS",
                "shortDescription": {
                  "text": "Conditional expression"
                },
                "fullDescription": {
                  "text": "Reports a ternary conditional expression. Some coding standards prohibit such expressions in favor of explicit 'if' statements.",
                  "markdown": "Reports a ternary conditional expression. Some coding standards prohibit such expressions in favor of explicit `if` statements."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ConditionalExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ConvertVarToLetConst",
                "shortDescription": {
                  "text": "'var' is used instead of 'let' or 'const'"
                },
                "fullDescription": {
                  "text": "Reports a 'var' declaration that is used instead of 'let' or 'const'. Both 'let' and 'const' are block-scoped and behave more strictly. Suggests replacing all 'var' declarations with 'let' or 'const' declarations, depending on the semantics of a particular value. The declarations may be moved to the top of the function or placed before the first usage of the variable to avoid Reference errors. Select the 'Conservatively convert var with Fix all action' option to prevent any changes in these complex cases when using the 'Fix all' action.",
                  "markdown": "Reports a `var` declaration that is used instead of `let` or `const`.  \nBoth `let` and `const` are block-scoped and behave more strictly.   \n\nSuggests replacing all `var` declarations with `let` or `const` declarations, depending on the semantics of a particular value. The declarations may be moved to the top of the function or placed before the first usage of the variable to avoid Reference errors.   \nSelect the 'Conservatively convert var with Fix all action' option to prevent any changes in these complex cases when using the 'Fix all' action."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6ConvertVarToLetConst",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/ES2015 migration aids",
                      "index": 18,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "PointlessBooleanExpressionJS",
                "shortDescription": {
                  "text": "Pointless statement or boolean expression"
                },
                "fullDescription": {
                  "text": "Reports a pointless or pointlessly complicated boolean expression or statement. Example: 'let a = !(false && x);\n  let b = false || x;' After the quick fix is applied the result looks like: 'let a = true;\n  let b = x;'",
                  "markdown": "Reports a pointless or pointlessly complicated boolean expression or statement.\n\nExample:\n\n\n      let a = !(false && x);\n      let b = false || x;\n\nAfter the quick fix is applied the result looks like:\n\n\n      let a = true;\n      let b = x;\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "PointlessBooleanExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSReferencingMutableVariableFromClosure",
                "shortDescription": {
                  "text": "Referencing mutable variable from closure"
                },
                "fullDescription": {
                  "text": "Reports access to outer mutable variables from functions. Example: 'for (var i = 1; i <= 3; i++) {\n    setTimeout(function() {\n        console.log(i); // bad\n    }, 0);\n  }'",
                  "markdown": "Reports access to outer mutable variables from functions.\n\nExample:\n\n\n      for (var i = 1; i <= 3; i++) {\n        setTimeout(function() {\n            console.log(i); // bad\n        }, 0);\n      }\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSReferencingMutableVariableFromClosure",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "DynamicallyGeneratedCodeJS",
                "shortDescription": {
                  "text": "Execution of dynamically generated code"
                },
                "fullDescription": {
                  "text": "Reports a call of the 'eval()', 'setTimeout()', or 'setInterval()' function or an allocation of a 'Function' object. These functions are used to execute arbitrary strings of JavaScript text, which often dynamically generated. This can be very confusing, and may be a security risk. Ignores the cases when a callback function is provided to these methods statically, without code generation.",
                  "markdown": "Reports a call of the `eval()`, `setTimeout()`, or `setInterval()` function or an allocation of a `Function` object. These functions are used to execute arbitrary strings of JavaScript text, which often dynamically generated. This can be very confusing, and may be a security risk.   \n\nIgnores the cases when a callback function is provided to these methods statically, without code generation."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "DynamicallyGeneratedCodeJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "NegatedConditionalExpressionJS",
                "shortDescription": {
                  "text": "Negated conditional expression"
                },
                "fullDescription": {
                  "text": "Reports a conditional expression whose condition is negated. Suggests flipping the order of branches in the conditional expression to increase the clarity of the statement. Example: '!condition ? 2 : 1'",
                  "markdown": "Reports a conditional expression whose condition is negated. Suggests flipping the order of branches in the conditional expression to increase the clarity of the statement. Example: `!condition ? 2 : 1`"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "NegatedConditionalExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSUrlImportUsage",
                "shortDescription": {
                  "text": "URL import is used"
                },
                "fullDescription": {
                  "text": "Checks used URL imports in the JavaScript language. Suggests downloading the module for the specified remote URL. Such association enables the IDE to provide proper code completion and navigation. URLs in import specifiers are supported only for ECMAScript modules in the JavaScript language.",
                  "markdown": "Checks used URL imports in the JavaScript language. Suggests downloading the module for the specified remote URL. Such association enables the IDE to provide proper code completion and navigation.   \n\nURLs in import specifiers are supported only for ECMAScript modules in the JavaScript language."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSUrlImportUsage",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Imports and dependencies",
                      "index": 42,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "UnnecessaryLabelOnContinueStatementJS",
                "shortDescription": {
                  "text": "Unnecessary label on 'continue' statement"
                },
                "fullDescription": {
                  "text": "Reports a labeled 'continue' statement whose labels may be removed without changing the flow of control.",
                  "markdown": "Reports a labeled `continue` statement whose labels may be removed without changing the flow of control."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "UnnecessaryLabelOnContinueStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Control flow issues",
                      "index": 1,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ChainedEqualityJS",
                "shortDescription": {
                  "text": "Chained equality"
                },
                "fullDescription": {
                  "text": "Reports a chained equality comparison (i.e. 'a==b==c'). Such comparisons are confusing.",
                  "markdown": "Reports a chained equality comparison (i.e. `a==b==c`). Such comparisons are confusing."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ChainedEqualityComparisonsJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Code style issues",
                      "index": 10,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "SillyAssignmentJS",
                "shortDescription": {
                  "text": "Variable is assigned to itself"
                },
                "fullDescription": {
                  "text": "Reports an assignment in the form 'x = x'.",
                  "markdown": "Reports an assignment in the form `x = x`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "SillyAssignmentJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Assignment issues",
                      "index": 34,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSPotentiallyInvalidTargetOfIndexedPropertyAccess",
                "shortDescription": {
                  "text": "Possibly incorrect target of indexed property access"
                },
                "fullDescription": {
                  "text": "Reports a potentially invalid indexed property access, for example, 'Array[1]'.",
                  "markdown": "Reports a potentially invalid indexed property access, for example, `Array[1]`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSPotentiallyInvalidTargetOfIndexedPropertyAccess",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSAccessibilityCheck",
                "shortDescription": {
                  "text": "Inaccessible @private and @protected members referenced"
                },
                "fullDescription": {
                  "text": "Reports a reference to a JavaScript member that is marked with a '@private' or '@protected' tag but does not comply with visibility rules that these tags imply.",
                  "markdown": "Reports a reference to a JavaScript member that is marked with a `@private` or `@protected` tag but does not comply with visibility rules that these tags imply."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSAccessibilityCheck",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ConvertRequireIntoImport",
                "shortDescription": {
                  "text": "'require()' is used instead of 'import'"
                },
                "fullDescription": {
                  "text": "Reports a 'require()' statement. Suggests converting it to a 'require()' call with an 'import' statement. Enable 'Convert require() inside inner scopes with Fix all action' to convert all 'require()' calls inside the nested functions and statements when using the 'Fix all' action. Please note that converting 'require()' statements inside inner scopes to 'import' statements may cause changes in the semantics of the code. Import statements are static module dependencies and are hoisted, which means that they are moved to the top of the current module. 'require()' calls load modules dynamically. They can be executed conditionally, and their scope is defined by the expression in which they are used. Clear the 'Convert require() inside inner scopes with Fix all action' checkbox to prevent any changes in these complex cases when using the 'Fix all' action.",
                  "markdown": "Reports a `require()` statement. Suggests converting it to a `require()` call with an `import` statement.   \n\nEnable 'Convert require() inside inner scopes with Fix all action' to convert all `require()` calls inside the nested functions and statements when using the 'Fix all' action.   \n\nPlease note that converting `require()` statements inside inner scopes to `import` statements may cause changes in the semantics of the code. Import statements are static module dependencies and are hoisted, which means that they are moved to the top of the current module. `require()` calls load modules dynamically. They can be executed conditionally, and their scope is defined by the expression in which they are used.   \nClear the 'Convert require() inside inner scopes with Fix all action' checkbox to prevent any changes in these complex cases when using the 'Fix all' action."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6ConvertRequireIntoImport",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/ES2015 migration aids",
                      "index": 18,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "FunctionWithMultipleLoopsJS",
                "shortDescription": {
                  "text": "Function with multiple loops"
                },
                "fullDescription": {
                  "text": "Reports a function with multiple loop statements.",
                  "markdown": "Reports a function with multiple loop statements."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "FunctionWithMultipleLoopsJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Function metrics",
                      "index": 29,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "LabeledStatementJS",
                "shortDescription": {
                  "text": "Labeled statement"
                },
                "fullDescription": {
                  "text": "Reports a labeled statement.",
                  "markdown": "Reports a labeled statement."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "LabeledStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "UnusedCatchParameterJS",
                "shortDescription": {
                  "text": "Unused 'catch' parameter"
                },
                "fullDescription": {
                  "text": "Reports a 'catch' parameter that is not used in the corresponding block. The 'catch' parameters named 'ignore' or 'ignored' are ignored. Use the checkbox below to disable this inspection for 'catch' blocks with comments.",
                  "markdown": "Reports a `catch` parameter that is not used in the corresponding block. The `catch` parameters named `ignore` or `ignored` are ignored.\n\n\nUse the checkbox below to disable this inspection for `catch`\nblocks with comments."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "UnusedCatchParameterJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Try statement issues",
                      "index": 27,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "NpmUsedModulesInstalled",
                "shortDescription": {
                  "text": "Missing module dependency"
                },
                "fullDescription": {
                  "text": "Reports a module from a 'require()' call or an 'import' statement that is not installed or is not listed in package.json dependencies. Suggests installing the module and/or including it into package.json. For 'require()' calls, works only in the files from the scope of Node.js Core JavaScript library.",
                  "markdown": "Reports a module from a `require()` call or an `import` statement that is not installed or is not listed in package.json dependencies.\n\nSuggests installing the module and/or including it into package.json.\n\nFor `require()` calls, works only in the files from the scope of *Node.js Core* JavaScript library."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "NpmUsedModulesInstalled",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Imports and dependencies",
                      "index": 42,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "WithStatementJS",
                "shortDescription": {
                  "text": "'with' statement"
                },
                "fullDescription": {
                  "text": "Reports a 'with' statements. Such statements result in potentially confusing implicit bindings, and may behave strangely in setting new variables.",
                  "markdown": "Reports a `with` statements. Such statements result in potentially confusing implicit bindings, and may behave strangely in setting new variables."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "WithStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSConstantReassignment",
                "shortDescription": {
                  "text": "Attempt to assign to const or readonly variable"
                },
                "fullDescription": {
                  "text": "Reports reassigning a value to a constant or a readonly variable.",
                  "markdown": "Reports reassigning a value to a constant or a readonly variable."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "JSConstantReassignment",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Validity issues",
                      "index": 23,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptCheckImport",
                "shortDescription": {
                  "text": "Unresolved imported name"
                },
                "fullDescription": {
                  "text": "Reports an unresolved name or binding in an 'import' declaration in TypeScript code.",
                  "markdown": "Reports an unresolved name or binding in an `import` declaration in TypeScript code."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "TypeScriptCheckImport",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "MagicNumberJS",
                "shortDescription": {
                  "text": "Magic number"
                },
                "fullDescription": {
                  "text": "Reports a \"magic number\" that is a numeric literal used without being named by a constant declaration. Magic numbers can result in code whose intention is unclear, and may result in errors if a magic number is changed in one code location but remains unchanged in another. The numbers 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 0.0 and 1.0 are ignored.",
                  "markdown": "Reports a \"magic number\" that is a numeric literal used without being named by a constant declaration. Magic numbers can result in code whose intention is unclear, and may result in errors if a magic number is changed in one code location but remains unchanged in another. The numbers 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000, 0.0 and 1.0 are ignored."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "MagicNumberJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "FunctionNamingConventionJS",
                "shortDescription": {
                  "text": "Function naming convention"
                },
                "fullDescription": {
                  "text": "Reports a function whose name is too short, too long, or does not follow the specified regular expression pattern. Use the fields provided below to specify minimum length, maximum length, and a regular expression for function names. Use the standard 'java.util.regex' format for regular expressions.",
                  "markdown": "Reports a function whose name is too short, too long, or does not follow the specified regular expression pattern.\n\n\nUse the fields provided below to specify minimum length, maximum length, and a regular expression\nfor function names. Use the standard `java.util.regex` format for regular expressions."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "FunctionNamingConventionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Naming conventions",
                      "index": 46,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSXSyntaxUsed",
                "shortDescription": {
                  "text": "JSX syntax used"
                },
                "fullDescription": {
                  "text": "Reports a usage of a JSX tag in JavaScript code.",
                  "markdown": "Reports a usage of a JSX tag in JavaScript code."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "JSXSyntaxUsed",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSJoinVariableDeclarationAndAssignment",
                "shortDescription": {
                  "text": "Variable declaration can be merged with the first assignment to the variable"
                },
                "fullDescription": {
                  "text": "Reports a variable that is declared without an initializer and is used much further in the code or in a single nested scope. Suggests moving the variable closer to its usages and joining it with the initializer expression.",
                  "markdown": "Reports a variable that is declared without an initializer and is used much further in the code or in a single nested scope. Suggests moving the variable closer to its usages and joining it with the initializer expression."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSJoinVariableDeclarationAndAssignment",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSRedundantSwitchStatement",
                "shortDescription": {
                  "text": "'switch' statement is redundant and can be replaced"
                },
                "fullDescription": {
                  "text": "Reports a 'switch' statement with an empty body, or with only one 'case' branch, or with a 'default' branch only.",
                  "markdown": "Reports a `switch` statement with an empty body, or with only one `case` branch, or with a `default` branch only."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSRedundantSwitchStatement",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Switch statement issues",
                      "index": 47,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptLibrary",
                "shortDescription": {
                  "text": "Missing global library"
                },
                "fullDescription": {
                  "text": "Reports a TypeScript library file that is required for a symbol but is not listed under the 'lib' compiler option in 'tsconfig.json'.",
                  "markdown": "Reports a TypeScript library file that is required for a symbol but is not listed under the `lib` compiler option in `tsconfig.json`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "TypeScriptLibrary",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptMissingAugmentationImport",
                "shortDescription": {
                  "text": "Missing augmentation import"
                },
                "fullDescription": {
                  "text": "Reports a usage from augmentation module without an explicit import.",
                  "markdown": "Reports a usage from [augmentation module](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) without an explicit import."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "TypeScriptMissingAugmentationImport",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSUnusedGlobalSymbols",
                "shortDescription": {
                  "text": "Unused global symbol"
                },
                "fullDescription": {
                  "text": "Reports an unused globally accessible public function, variable, class, or property.",
                  "markdown": "Reports an unused globally accessible public function, variable, class, or property."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSUnusedGlobalSymbols",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Unused symbols",
                      "index": 15,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ConvertModuleExportToExport",
                "shortDescription": {
                  "text": "'module.exports' is used instead of 'export'"
                },
                "fullDescription": {
                  "text": "Reports a 'module.export' statement. Suggests replacing it with an 'export' or 'export default' statement. Please note that the quick-fix for converting 'module.export' into 'export' is not available for 'module.export' inside functions or statements because 'export' statements can only be at the top level of a module.",
                  "markdown": "Reports a `module.export` statement. Suggests replacing it with an `export` or `export default` statement.   \n\nPlease note that the quick-fix for converting `module.export` into `export` is not available for `module.export` inside functions or statements because `export` statements can only be at the top level of a module."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6ConvertModuleExportToExport",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/ES2015 migration aids",
                      "index": 18,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "DocumentWriteJS",
                "shortDescription": {
                  "text": "Call to 'document.write()'"
                },
                "fullDescription": {
                  "text": "Reports a method call to 'document.write()' or 'document.writeln()'. Most usages of such calls are performed better with explicit DOM calls, such as 'getElementByID()' and 'createElement()'. Additionally, the 'write()' and 'writeln()' calls will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can result in difficulty to point out bugs.",
                  "markdown": "Reports a method call to `document.write()` or `document.writeln()`. Most usages of such calls are performed better with explicit DOM calls, such as `getElementByID()` and `createElement()`. Additionally, the `write()` and `writeln()` calls will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can result in difficulty to point out bugs."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "DocumentWriteJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/DOM issues",
                      "index": 48,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "AnonymousFunctionJS",
                "shortDescription": {
                  "text": "Anonymous function"
                },
                "fullDescription": {
                  "text": "Reports an anonymous function. An explicit name of a function expression may be helpful for debugging. Ignores function expressions without names if they have a 'name' property specified in the ECMAScript 6 standard. For example, 'var bar = function() {};' is not reported.",
                  "markdown": "Reports an anonymous function. An explicit name of a function expression may be helpful for debugging. Ignores function expressions without names if they have a `name` property specified in the ECMAScript 6 standard. For example, `var bar = function() {};` is not reported."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "AnonymousFunctionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially undesirable code constructs",
                      "index": 11,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "BlockStatementJS",
                "shortDescription": {
                  "text": "Unnecessary block statement"
                },
                "fullDescription": {
                  "text": "Reports a block statement that is not used as the body of 'if', 'for', 'while', 'do', 'with', or 'try' statements, or as the body of a function declaration. Starting from ECMAScript 6, JavaScript blocks introduce new scopes for 'let' and 'const' variables, but still free-standing block statements may be confusing and result in subtle bugs when used with 'var' variables.",
                  "markdown": "Reports a block statement that is not used as the body of `if`, `for`, `while`, `do`, `with`, or `try` statements, or as the body of a function declaration. Starting from ECMAScript 6, JavaScript blocks introduce new scopes for `let` and `const` variables, but still free-standing block statements may be confusing and result in subtle bugs when used with `var` variables."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "BlockStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ObjectAllocationIgnoredJS",
                "shortDescription": {
                  "text": "Result of object allocation ignored"
                },
                "fullDescription": {
                  "text": "Reports object allocation where the result of the allocated object is ignored, for example, 'new Error();' as a statement, without any assignment. Such allocation expressions may indicate an odd object initialization strategy.",
                  "markdown": "Reports object allocation where the result of the allocated object is ignored, for example, `new Error();` as a statement, without any assignment. Such allocation expressions may indicate an odd object initialization strategy."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ObjectAllocationIgnored",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "InfiniteRecursionJS",
                "shortDescription": {
                  "text": "Infinite recursion"
                },
                "fullDescription": {
                  "text": "Reports a function which must either recurse infinitely or throw an exception. Such functions may not return normally.",
                  "markdown": "Reports a function which must either recurse infinitely or throw an exception. Such functions may not return normally."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "InfiniteRecursionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "NestedConditionalExpressionJS",
                "shortDescription": {
                  "text": "Nested conditional expression"
                },
                "fullDescription": {
                  "text": "Reports a ternary conditional expression within another ternary condition. Such nested conditionals may be extremely confusing, and best replaced by more explicit conditional logic.",
                  "markdown": "Reports a ternary conditional expression within another ternary condition. Such nested conditionals may be extremely confusing, and best replaced by more explicit conditional logic."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "NestedConditionalExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Potentially confusing code constructs",
                      "index": 24,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSTypeOfValues",
                "shortDescription": {
                  "text": "'typeof' comparison with non-standard value"
                },
                "fullDescription": {
                  "text": "Reports a comparison of a 'typeof' expression with a literal string which is not one of the standard types: 'undefined', 'object', 'boolean', 'number', 'string', 'function', or 'symbol'. Such comparisons always return 'false'.",
                  "markdown": "Reports a comparison of a `typeof` expression with a literal string which is not one of the standard types: `undefined`, `object`, `boolean`, `number`, `string`, `function`, or `symbol`. Such comparisons always return `false`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSTypeOfValues",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "IncompatibleMaskJS",
                "shortDescription": {
                  "text": "Incompatible bitwise mask operation"
                },
                "fullDescription": {
                  "text": "Reports a bitwise mask expression which for sure evaluates to 'true' or 'false'. Expressions are of the form '(var & constant1) == constant2' or '(var | constant1) == constant2', where 'constant1' and 'constant2' are incompatible bitmask constants. Example: '// Incompatible mask: as the last byte in mask is zero,\n// something like 0x1200 would be possible, but not 0x1234\nif ((mask & 0xFF00) == 0x1234) {...}'",
                  "markdown": "Reports a bitwise mask expression which for sure evaluates to `true` or `false`. Expressions are of the form `(var & constant1) == constant2` or `(var | constant1) == constant2`, where `constant1` and `constant2` are incompatible bitmask constants.\n\nExample:\n\n\n    // Incompatible mask: as the last byte in mask is zero,\n    // something like 0x1200 would be possible, but not 0x1234\n    if ((mask & 0xFF00) == 0x1234) {...}\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "IncompatibleBitwiseMaskOperation",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Bitwise operation issues",
                      "index": 17,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TextLabelInSwitchStatementJS",
                "shortDescription": {
                  "text": "Text label in 'switch' statement"
                },
                "fullDescription": {
                  "text": "Reports a labeled statement inside a 'switch' statement, which often results from a typo. Example: 'switch(x)\n    {\n        case 1:\n        case2:   //typo!\n        case 3:\n            break;\n    }'",
                  "markdown": "Reports a labeled statement inside a `switch` statement, which often results from a typo.\n\nExample:\n\n\n        switch(x)\n        {\n            case 1:\n            case2:   //typo!\n            case 3:\n                break;\n        }\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "TextLabelInSwitchStatementJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Switch statement issues",
                      "index": 47,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6PossiblyAsyncFunction",
                "shortDescription": {
                  "text": "'await' in non-async function"
                },
                "fullDescription": {
                  "text": "Reports a usage of 'await' in a function that was possibly intended to be async but is actually missing the 'async' modifier. Although 'await' can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made 'async'.",
                  "markdown": "Reports a usage of `await` in a function that was possibly intended to be async but is actually missing the `async` modifier. Although `await` can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made `async`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "ES6PossiblyAsyncFunction",
                    "ideaSeverity": "WEAK WARNING",
                    "qodanaSeverity": "Moderate"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Async code and promises",
                      "index": 49,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "EmptyCatchBlockJS",
                "shortDescription": {
                  "text": "Empty 'catch' block"
                },
                "fullDescription": {
                  "text": "Reports an empty 'catch' block. This indicates that errors are simply ignored instead of handling them. Any comment in a 'catch' block mutes the inspection.",
                  "markdown": "Reports an empty `catch` block. This indicates that errors are simply ignored instead of handling them.   \n\nAny comment in a `catch` block mutes the inspection."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "EmptyCatchBlockJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Try statement issues",
                      "index": 27,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSHint",
                "shortDescription": {
                  "text": "JSHint"
                },
                "fullDescription": {
                  "text": "Reports a problem detected by the JSHint linter.",
                  "markdown": "Reports a problem detected by the [JSHint](https://jshint.com/) linter."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "JSHint",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Code quality tools",
                      "index": 51,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "FlowJSFlagCommentPlacement",
                "shortDescription": {
                  "text": "Misplaced @flow flag"
                },
                "fullDescription": {
                  "text": "Reports a '@flow' flag comment that is not located at the top of a file.",
                  "markdown": "Reports a `@flow` flag comment that is not located at the top of a file."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "FlowJSFlagCommentPlacement",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Flow type checker",
                      "index": 12,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "Eslint",
                "shortDescription": {
                  "text": "ESLint"
                },
                "fullDescription": {
                  "text": "Reports a discrepancy detected by the ESLint linter. The highlighting is based on the rule severity specified in the ESLint configuration file for each individual rule. Clear the 'Use rule severity from the configuration file' checkbox to use the severity configured in this inspection for all ESLint rules.",
                  "markdown": "Reports a discrepancy detected by the [ESLint](https://eslint.org) linter.   \n\nThe highlighting is based on the rule severity specified in the [ESLint configuration file](https://eslint.org/docs/user-guide/configuring) for each individual rule.   \n\nClear the 'Use rule severity from the configuration file' checkbox to use the severity configured in this inspection for all ESLint rules."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "Eslint",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Code quality tools",
                      "index": 51,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSDuplicatedDeclaration",
                "shortDescription": {
                  "text": "Duplicate declaration"
                },
                "fullDescription": {
                  "text": "Reports multiple declarations in a scope.",
                  "markdown": "Reports multiple declarations in a scope."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSDuplicatedDeclaration",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSEqualityComparisonWithCoercion.TS",
                "shortDescription": {
                  "text": "Equality operator may cause type coercion"
                },
                "fullDescription": {
                  "text": "Reports a usage of equality operators may cause unexpected type coercions. Suggests replacing '==' or '!=' equality operators with type-safe '===' or '!==' operators. Depending on the option selected, one of the following cases will be reported: All usages of '==' and '!=' operators. All usages except comparison with null. Some code styles allow using 'x == null' as a replacement for 'x === null || x === undefined'. Only suspicious expressions, such as: '==' or '!=' comparisons with '0', '''', 'null', 'true', 'false', or 'undefined'.",
                  "markdown": "Reports a usage of equality operators may cause unexpected type coercions. Suggests replacing `==` or `!=` equality operators with type-safe `===` or `!==` operators.\n\nDepending on the option selected, one of the following cases will be reported:\n\n* All usages of `==` and `!=` operators.\n* All usages except comparison with null. Some code styles allow using `x == null` as a replacement for `x === null || x === undefined`.\n* Only suspicious expressions, such as: `==` or `!=` comparisons with `0`, `''`, `null`, `true`, `false`, or `undefined`."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "EqualityComparisonWithCoercionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSOctalInteger",
                "shortDescription": {
                  "text": "Octal integer"
                },
                "fullDescription": {
                  "text": "Reports a deprecated octal integer literal prefixed with '0' instead of '0o'. Such literals are not allowed in modern ECMAScript code, and using them in the strict mode is an error. To force this inspection for ES5 and ES3 language levels, select the 'Warn about obsolete octal literals in ES5- code' checkbox below.",
                  "markdown": "Reports a deprecated octal integer literal prefixed with `0` instead of `0o`.  \nSuch literals are not allowed in modern ECMAScript code, and using them in the strict mode is an error.  \nTo force this inspection for ES5 and ES3 language levels, select the 'Warn about obsolete octal literals in ES5- code' checkbox below."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "JSOctalInteger",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Validity issues",
                      "index": 23,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ExceptionCaughtLocallyJS",
                "shortDescription": {
                  "text": "Exception used for local control-flow"
                },
                "fullDescription": {
                  "text": "Reports a 'throw' statement whose exceptions are always caught by the containing 'try' statement. Using 'throw' statements as a 'goto' to change the local flow of control is confusing.",
                  "markdown": "Reports a `throw` statement whose exceptions are always caught by the containing `try` statement. Using `throw` statements as a `goto` to change the local flow of control is confusing."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ExceptionCaughtLocallyJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Try statement issues",
                      "index": 27,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ThrowFromFinallyBlockJS",
                "shortDescription": {
                  "text": "'throw' inside 'finally' block"
                },
                "fullDescription": {
                  "text": "Reports s 'throw' statement inside a 'finally' block. Such 'throw' statements may mask exceptions thrown, and complicate debugging.",
                  "markdown": "Reports s `throw` statement inside a `finally` block. Such `throw` statements may mask exceptions thrown, and complicate debugging."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ThrowInsideFinallyBlockJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Try statement issues",
                      "index": 27,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "TypeScriptValidateGenericTypes",
                "shortDescription": {
                  "text": "Incorrect generic type argument"
                },
                "fullDescription": {
                  "text": "Reports an invalid type argument in a function, interface, or class declaration.",
                  "markdown": "Reports an invalid type argument in a function, interface, or class declaration."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "TypeScriptValidateGenericTypes",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/TypeScript",
                      "index": 22,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "CyclomaticComplexityJS",
                "shortDescription": {
                  "text": "Overly complex function"
                },
                "fullDescription": {
                  "text": "Reports a function with too many branching points in a function (too high cyclomatic complexity). Such functions may be confusing and hard to test. Use the field provided below to specify the maximum acceptable cyclomatic complexity for a function.",
                  "markdown": "Reports a function with too many branching points in a function (too high cyclomatic complexity). Such functions may be confusing and hard to test.\n\n\nUse the field provided below to specify the maximum acceptable cyclomatic complexity for a function."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "OverlyComplexFunctionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Function metrics",
                      "index": 29,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSMismatchedCollectionQueryUpdate",
                "shortDescription": {
                  "text": "Mismatched query and update of collection"
                },
                "fullDescription": {
                  "text": "Reports a collection of fields or variables whose contents are either queried and not updated or updated and not queried. Such mismatched queries and updates are pointless and may indicate either dead code or a typographical error. Query methods are automatically detected, based on whether they return something, or a callback is passed to them. Use the table below to specify which methods are update methods.",
                  "markdown": "Reports a collection of fields or variables whose contents are either queried and not updated or updated and not queried. Such mismatched queries and updates are pointless and may indicate either dead code or a typographical error.\n\n\nQuery methods are automatically detected, based on whether they return something, or a callback is passed to them.\nUse the table below to specify which methods are update methods."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSMismatchedCollectionQueryUpdate",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "PackageJsonMismatchedDependency",
                "shortDescription": {
                  "text": "Mismatched dependencies in package.json"
                },
                "fullDescription": {
                  "text": "Reports a dependency from package.json that is not installed or doesn't match the specified version range.",
                  "markdown": "Reports a dependency from package.json that is not installed or doesn't match the specified [version range](https://docs.npmjs.com/about-semantic-versioning)."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "PackageJsonMismatchedDependency",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Imports and dependencies",
                      "index": 42,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSPotentiallyInvalidUsageOfThis",
                "shortDescription": {
                  "text": "Potentially invalid reference to 'this' from closure"
                },
                "fullDescription": {
                  "text": "Reports a 'this' in closure that is used for referencing properties of outer context. Example: 'function Outer() {\n  this.outerProp = 1;\n  function inner() {\n    // bad, because 'outerProp' of Outer\n    // won't be updated here\n    // on calling 'new Outer()' as may be expected\n    this.outerProp = 2;\n  }\n  inner();\n}'",
                  "markdown": "Reports a `this` in closure that is used for referencing properties of outer context.\n\nExample:\n\n\n    function Outer() {\n      this.outerProp = 1;\n      function inner() {\n        // bad, because 'outerProp' of Outer\n        // won't be updated here\n        // on calling 'new Outer()' as may be expected\n        this.outerProp = 2;\n      }\n      inner();\n    }\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSPotentiallyInvalidUsageOfThis",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSMissingSwitchDefault",
                "shortDescription": {
                  "text": "'switch' statement has no 'default' branch"
                },
                "fullDescription": {
                  "text": "Reports a 'switch' statement without a 'default' clause when some possible values are not enumerated.",
                  "markdown": "Reports a `switch` statement without a `default` clause when some possible values are not enumerated."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSMissingSwitchDefault",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Switch statement issues",
                      "index": 47,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSXNamespaceValidation",
                "shortDescription": {
                  "text": "Missing JSX namespace"
                },
                "fullDescription": {
                  "text": "Reports a usage of a JSX construction without importing namespace. Having the namespace in the file scope ensures proper code compilation.",
                  "markdown": "Reports a usage of a JSX construction without importing namespace. Having the namespace in the file scope ensures proper code compilation."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSXNamespaceValidation",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Imports and dependencies",
                      "index": 42,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSUnresolvedLibraryURL",
                "shortDescription": {
                  "text": "Missed locally stored library for HTTP link"
                },
                "fullDescription": {
                  "text": "Reports a URL of an external JavaScript library that is not associated with any locally stored file. Suggests downloading the library. Such association enables the IDE to provide proper code completion and navigation.",
                  "markdown": "Reports a URL of an external JavaScript library that is not associated with any locally stored file. Suggests downloading the library. Such association enables the IDE to provide proper code completion and navigation."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSUnresolvedLibraryURL",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6PreferShortImport",
                "shortDescription": {
                  "text": "Import can be shortened"
                },
                "fullDescription": {
                  "text": "Reports an ES6 import whose 'from' part can be shortened. Suggests importing the parent directory.",
                  "markdown": "Reports an ES6 import whose `from` part can be shortened. Suggests importing the parent directory."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ES6PreferShortImport",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "PointlessBitwiseExpressionJS",
                "shortDescription": {
                  "text": "Bitwise expression can be simplified"
                },
                "fullDescription": {
                  "text": "Reports an expression that includes 'and' with zero, 'or' by zero, or shifting by zero. Such expressions may result from not fully completed automated refactorings.",
                  "markdown": "Reports an expression that includes `and` with zero, `or` by zero, or shifting by zero. Such expressions may result from not fully completed automated refactorings."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "PointlessBitwiseExpressionJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Bitwise operation issues",
                      "index": 17,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "InfiniteLoopJS",
                "shortDescription": {
                  "text": "Infinite loop statement"
                },
                "fullDescription": {
                  "text": "Reports a 'for', 'while', or 'do' statement which can only exit by throwing an exception. Such statements often indicate coding errors.",
                  "markdown": "Reports a `for`, `while`, or `do` statement which can only exit by throwing an exception. Such statements often indicate coding errors."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "InfiniteLoopJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Probable bugs",
                      "index": 13,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSStringConcatenationToES6Template",
                "shortDescription": {
                  "text": "String concatenation is used instead of template literal"
                },
                "fullDescription": {
                  "text": "Reports a string concatenation. Suggests replacing it with a template literal Example '\"result: \" + a + \".\"' After applying the quick-fix the code looks as follows: '`result: ${a}.`'",
                  "markdown": "Reports a string concatenation. Suggests replacing it with a [template literal](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)\n\nExample\n\n     \"result: \" + a + \".\" \n\nAfter applying the quick-fix the code looks as follows:\n\n     `result: ${a}.` \n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSStringConcatenationToES6Template",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/ES2015 migration aids",
                      "index": 18,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSArrowFunctionBracesCanBeRemoved",
                "shortDescription": {
                  "text": "Redundant braces around arrow function body"
                },
                "fullDescription": {
                  "text": "Reports an arrow function whose body only consists of braces and exactly one statement. Suggests converting to concise syntax without braces. 'let incrementer = (x) => {return x + 1};' After the quick-fix is applied, the code fragment looks as follows: 'let incrementer = (x) => x + 1;'",
                  "markdown": "Reports an arrow function whose body only consists of braces and exactly one statement. Suggests converting to concise syntax without braces.\n\n\n        let incrementer = (x) => {return x + 1};\n\nAfter the quick-fix is applied, the code fragment looks as follows:\n\n\n        let incrementer = (x) => x + 1;\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "note",
                  "parameters": {
                    "suppressToolId": "JSArrowFunctionBracesCanBeRemoved",
                    "ideaSeverity": "INFORMATION",
                    "qodanaSeverity": "Info"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Code style issues",
                      "index": 10,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ReplaceAssignmentWithOperatorAssignmentJS",
                "shortDescription": {
                  "text": "Assignment could be replaced with operator assignment"
                },
                "fullDescription": {
                  "text": "Reports an assignment operation that can be replaced by an operator assignment to make your code shorter and probably clearer. Example: 'x = x + 3;'\n  'x = x / 3;'\n After the quick fix is applied the result looks like:   'x += 3;'\n  'x /= 3;'",
                  "markdown": "Reports an assignment operation that can be replaced by an operator assignment to make your code shorter and probably clearer.\n\n\nExample:\n\n      x = x + 3;\n      x = x / 3;\n\nAfter the quick fix is applied the result looks like:\n\n      x += 3;\n      x /= 3;\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "AssignmentReplaceableWithOperatorAssignmentJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Assignment issues",
                      "index": 34,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "JSFileReferences",
                "shortDescription": {
                  "text": "Unresolved file reference"
                },
                "fullDescription": {
                  "text": "Reports an unresolved file reference in a JavaScript file, including CommonJS and AMD modules references.",
                  "markdown": "Reports an unresolved file reference in a JavaScript file, including CommonJS and AMD modules references."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "JSFileReferences",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "Stylelint",
                "shortDescription": {
                  "text": "Stylelint"
                },
                "fullDescription": {
                  "text": "Reports a discrepancy detected by the Stylelint linter. The highlighting is based on the rule severity specified in the Stylelint configuration file for each individual rule.",
                  "markdown": "Reports a discrepancy detected by the [Stylelint](http://stylelint.io) linter.   \n\nThe highlighting is based on the rule severity specified in the [Stylelint configuration file](https://stylelint.io/user-guide/configure) for each individual rule."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "error",
                  "parameters": {
                    "suppressToolId": "Stylelint",
                    "ideaSeverity": "ERROR",
                    "qodanaSeverity": "Critical"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "CSS/Code quality tools",
                      "index": 56,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "FunctionWithInconsistentReturnsJS",
                "shortDescription": {
                  "text": "Function with inconsistent returns"
                },
                "fullDescription": {
                  "text": "Reports a function that returns a value in some cases while in other cases no value is returned. This usually indicates an error. Example: 'function foo() {\n  if (true)\n    return 3;\n  return;\n}'",
                  "markdown": "Reports a function that returns a value in some cases while in other cases no value is returned. This usually indicates an error.\n\nExample:\n\n\n    function foo() {\n      if (true)\n        return 3;\n      return;\n    }\n\n"
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "FunctionWithInconsistentReturnsJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Validity issues",
                      "index": 23,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "EmptyTryBlockJS",
                "shortDescription": {
                  "text": "Empty 'try' block"
                },
                "fullDescription": {
                  "text": "Reports an empty 'try' block, which usually indicates an error.",
                  "markdown": "Reports an empty `try` block, which usually indicates an error."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "EmptyTryBlockJS",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/Try statement issues",
                      "index": 27,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
                ]
              },
              {
                "id": "ES6ClassMemberInitializationOrder",
                "shortDescription": {
                  "text": "Use of possibly unassigned property in a static initializer"
                },
                "fullDescription": {
                  "text": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. Initialization of class members happens consequently for fields, so a field cannot reference another field that is declared later.",
                  "markdown": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet.   \n\nInitialization of class members happens consequently for fields, so a field cannot reference another field that is declared later."
                },
                "defaultConfiguration": {
                  "enabled": false,
                  "level": "warning",
                  "parameters": {
                    "suppressToolId": "ES6ClassMemberInitializationOrder",
                    "ideaSeverity": "WARNING",
                    "qodanaSeverity": "High"
                  }
                },
                "relationships": [
                  {
                    "target": {
                      "id": "JavaScript and TypeScript/General",
                      "index": 9,
                      "toolComponent": {
                        "name": "QDGO"
                      }
                    },
                    "kinds": [
                      "superset"
                    ]
                  }
Download .txt
gitextract_varw5met/

├── .gitattributes
├── .github/
│   └── workflows/
│       ├── build.yml
│       ├── codeql.yml
│       ├── qodana.yml
│       ├── qodana_pr.yml
│       └── release.yml
├── .gitignore
├── .qodana/
│   └── qodana.sarif.json
├── LICENSE
├── Makefile
├── README.md
├── agent/
│   ├── agent.go
│   ├── memory/
│   │   └── memory.go
│   ├── repository.go
│   └── structs.go
├── authenticators/
│   ├── authenticaters.go
│   ├── none/
│   │   └── none.go
│   ├── opaque/
│   │   └── opaque.go
│   └── rsa/
│       └── rsa.go
├── cli/
│   └── cli.go
├── clients/
│   ├── clients.go
│   ├── http/
│   │   ├── http.go
│   │   └── http_exclude.go
│   ├── memory/
│   │   └── memory.go
│   ├── mythic/
│   │   ├── mythic.go
│   │   └── structs.go
│   ├── repository.go
│   ├── smb/
│   │   ├── smb.go
│   │   └── smb_windows.go
│   ├── tcp/
│   │   ├── tcp.go
│   │   └── tcp_exclude.go
│   └── udp/
│       ├── udp.go
│       └── udp_exclude.go
├── commands/
│   ├── clr.go
│   ├── clr_windows.go
│   ├── download.go
│   ├── env.go
│   ├── exec.go
│   ├── exec_windows.go
│   ├── execute.go
│   ├── ifconfig.go
│   ├── ifconfig_windows.go
│   ├── link.go
│   ├── listener.go
│   ├── memfd.go
│   ├── memfd_linux.go
│   ├── memory.go
│   ├── memory_windows.go
│   ├── modules.go
│   ├── native.go
│   ├── netstat.go
│   ├── netstat_windows.go
│   ├── os.go
│   ├── os_windows.go
│   ├── pipes.go
│   ├── pipes_windows.go
│   ├── ps.go
│   ├── ps_windows.go
│   ├── runas.go
│   ├── runas_windows.go
│   ├── shell.go
│   ├── shell_darwin.go
│   ├── shell_freebsd.go
│   ├── shell_linux.go
│   ├── shell_windows.go
│   ├── shellcode.go
│   ├── smb.go
│   ├── smb_windows.go
│   ├── ssh.go
│   ├── tokens.go
│   ├── tokens_windows.go
│   ├── unlink.go
│   ├── upload.go
│   ├── uptime.go
│   └── uptime_windows.go
├── core/
│   └── core.go
├── docs/
│   ├── CHANGELOG.MD
│   ├── ISSUE_TEMPLATE.md
│   └── PULL_REQUEST_TEMPLATE.md
├── go.mod
├── go.sum
├── http/
│   ├── http.go
│   ├── http1/
│   │   ├── http1.go
│   │   └── http1_exclude.go
│   ├── http2/
│   │   ├── http2.go
│   │   └── http2_exclude.go
│   ├── http3/
│   │   ├── http3.go
│   │   └── http3_exclude.go
│   ├── proxy/
│   │   └── proxy.go
│   ├── utls/
│   │   └── utls.go
│   └── winhttp/
│       ├── winhttp_exclude.go
│       └── winhttp_windows.go
├── main.go
├── os/
│   ├── os.go
│   ├── os_windows.go
│   └── windows/
│       ├── README.MD
│       ├── api/
│       │   ├── advapi32/
│       │   │   └── advapi32.go
│       │   ├── kernel32/
│       │   │   └── kernel32.go
│       │   ├── ntdll/
│       │   │   └── ntdll.go
│       │   └── user32/
│       │       └── user32.go
│       └── pkg/
│           ├── evasion/
│           │   ├── evasion.go
│           │   └── evasion_386.go
│           ├── pipes/
│           │   └── pipes.go
│           ├── processes/
│           │   └── processes.go
│           ├── text/
│           │   └── text.go
│           └── tokens/
│               └── tokens.go
├── p2p/
│   ├── memory/
│   │   └── memory.go
│   ├── p2p.go
│   └── repository.go
├── qodana.yaml
├── run/
│   └── run.go
├── services/
│   ├── agent/
│   │   └── agent.go
│   ├── client/
│   │   └── client.go
│   ├── job/
│   │   └── job.go
│   ├── message/
│   │   └── message.go
│   ├── p2p/
│   │   └── p2p.go
│   └── services.go
├── socks/
│   └── socks.go
└── transformers/
    ├── encoders/
    │   ├── base64/
    │   │   └── base64.go
    │   ├── gob/
    │   │   └── gob.go
    │   ├── hex/
    │   │   └── hex.go
    │   └── mythic/
    │       └── mythic.go
    ├── encrypters/
    │   ├── aes/
    │   │   └── aes.go
    │   ├── jwe/
    │   │   └── jwe.go
    │   ├── rc4/
    │   │   └── rc4.go
    │   └── xor/
    │       └── xor.go
    └── transformer.go
Download .txt
SYMBOL INDEX (699 symbols across 108 files)

FILE: agent/agent.go
  type Agent (line 42) | type Agent struct
    method Authenticated (line 189) | func (a *Agent) Authenticated() bool {
    method Comms (line 195) | func (a *Agent) Comms() Comms {
    method Failed (line 200) | func (a *Agent) Failed() int {
    method Host (line 206) | func (a *Agent) Host() Host {
    method ID (line 211) | func (a *Agent) ID() uuid.UUID {
    method KillDate (line 216) | func (a *Agent) KillDate() int64 {
    method MaxRetry (line 221) | func (a *Agent) MaxRetry() int {
    method Process (line 227) | func (a *Agent) Process() Process {
    method SetAuthenticated (line 233) | func (a *Agent) SetAuthenticated(authenticated bool) {
    method SetComms (line 239) | func (a *Agent) SetComms(comms Comms) {
    method SetFailedCheckIn (line 245) | func (a *Agent) SetFailedCheckIn(failed int) {
    method SetInitialCheckIn (line 251) | func (a *Agent) SetInitialCheckIn(checkin time.Time) {
    method SetKillDate (line 257) | func (a *Agent) SetKillDate(epochDate int64) {
    method SetMaxRetry (line 263) | func (a *Agent) SetMaxRetry(retries int) {
    method SetSkew (line 269) | func (a *Agent) SetSkew(skew int64) {
    method SetStatusCheckIn (line 275) | func (a *Agent) SetStatusCheckIn(checkin time.Time) {
    method SetWaitTime (line 281) | func (a *Agent) SetWaitTime(wait time.Duration) {
    method Skew (line 286) | func (a *Agent) Skew() int64 {
    method Wait (line 291) | func (a *Agent) Wait() time.Duration {
  type Config (line 53) | type Config struct
  function New (line 61) | func New(config Config) (agent Agent, err error) {

FILE: agent/memory/memory.go
  type Repository (line 35) | type Repository struct
    method Add (line 54) | func (r *Repository) Add(agent agent.Agent) {
    method Get (line 61) | func (r *Repository) Get() agent.Agent {
    method SetAuthenticated (line 66) | func (r *Repository) SetAuthenticated(authenticated bool) {
    method SetFailedCheckIn (line 74) | func (r *Repository) SetFailedCheckIn(failed int) {
    method SetInitialCheckIn (line 82) | func (r *Repository) SetInitialCheckIn(checkin time.Time) {
    method SetKillDate (line 90) | func (r *Repository) SetKillDate(epochDate int64) {
    method SetMaxRetry (line 98) | func (r *Repository) SetMaxRetry(retries int) {
    method SetSkew (line 106) | func (r *Repository) SetSkew(skew int64) {
    method SetSleep (line 114) | func (r *Repository) SetSleep(sleep time.Duration) {
    method SetComms (line 121) | func (r *Repository) SetComms(comms agent.Comms) {
    method SetStatusCheckIn (line 129) | func (r *Repository) SetStatusCheckIn(checkin time.Time) {
  function NewRepository (line 44) | func NewRepository() *Repository {

FILE: agent/repository.go
  type Repository (line 25) | type Repository interface

FILE: agent/structs.go
  type Build (line 26) | type Build struct
  type Comms (line 32) | type Comms struct
  type Host (line 44) | type Host struct
  type Process (line 52) | type Process struct

FILE: authenticators/authenticaters.go
  type Authenticator (line 31) | type Authenticator interface

FILE: authenticators/none/none.go
  type Authenticator (line 33) | type Authenticator struct
    method Authenticate (line 43) | func (a *Authenticator) Authenticate(messages.Base) (messages.Base, bo...
    method Secret (line 48) | func (a *Authenticator) Secret() ([]byte, error) {
    method String (line 53) | func (a *Authenticator) String() string {
  function New (line 38) | func New(id uuid.UUID) *Authenticator {

FILE: authenticators/opaque/opaque.go
  type Authenticator (line 45) | type Authenticator struct
    method Authenticate (line 58) | func (a *Authenticator) Authenticate(in messages.Base) (out messages.B...
    method Secret (line 156) | func (a *Authenticator) Secret() (key []byte, err error) {
    method String (line 164) | func (a *Authenticator) String() string {
  function New (line 53) | func New(id uuid.UUID) *Authenticator {
  type User (line 169) | type User struct
  function UserRegisterInit (line 178) | func UserRegisterInit(AgentID uuid.UUID, user *User) (opaque.Opaque, *Us...
  function UserRegisterComplete (line 219) | func UserRegisterComplete(regInitResp opaque.Opaque, user *User) (opaque...
  function UserAuthenticateInit (line 262) | func UserAuthenticateInit(AgentID uuid.UUID, user *User) (opaque.Opaque,...
  function UserAuthenticateComplete (line 295) | func UserAuthenticateComplete(authInitResp opaque.Opaque, user *User) (o...

FILE: authenticators/rsa/rsa.go
  type Authenticator (line 46) | type Authenticator struct
    method Authenticate (line 66) | func (a *Authenticator) Authenticate(msg messages.Base) (messages.Base...
    method Secret (line 114) | func (a *Authenticator) Secret() ([]byte, error) {
    method String (line 122) | func (a *Authenticator) String() string {
  function New (line 55) | func New(id uuid.UUID, key rsa.PrivateKey) *Authenticator {

FILE: cli/cli.go
  constant INFO (line 33) | INFO = 1
  constant NOTE (line 35) | NOTE = 2
  constant WARN (line 37) | WARN = 3
  constant DEBUG (line 39) | DEBUG = 4
  constant SUCCESS (line 41) | SUCCESS = 5
  function Message (line 45) | func Message(level int, message string) {

FILE: clients/clients.go
  type Client (line 30) | type Client interface

FILE: clients/http/http.go
  type Client (line 69) | type Client struct
    method getJWT (line 287) | func (client *Client) getJWT() (string, error) {
    method Listen (line 335) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method proxy (line 340) | func (client *Client) proxy() (err error) {
    method Send (line 363) | func (client *Client) Send(m messages.Base) (returnMessages []messages...
    method Set (line 543) | func (client *Client) Set(key string, value string) (err error) {
    method Get (line 629) | func (client *Client) Get(key string) (value string) {
    method Authenticate (line 649) | func (client *Client) Authenticate(msg messages.Base) (err error) {
    method Construct (line 710) | func (client *Client) Construct(msg messages.Base) (data []byte, err e...
    method Deconstruct (line 731) | func (client *Client) Deconstruct(data []byte) (messages.Base, error) {
    method Initial (line 767) | func (client *Client) Initial() (err error) {
    method Synchronous (line 774) | func (client *Client) Synchronous() bool {
  type Config (line 96) | type Config struct
  function New (line 118) | func New(config Config) (*Client, error) {

FILE: clients/http/http_exclude.go
  type Client (line 39) | type Client struct
    method Listen (line 70) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 78) | func (client *Client) Send(m messages.Base) (returnMessages []messages...
    method Set (line 84) | func (client *Client) Set(key string, value string) (err error) {
    method Get (line 90) | func (client *Client) Get(key string) (value string) {
    method Authenticate (line 96) | func (client *Client) Authenticate(msg messages.Base) (err error) {
    method Construct (line 103) | func (client *Client) Construct(msg messages.Base) (data []byte, err e...
    method Deconstruct (line 110) | func (client *Client) Deconstruct(data []byte) (messages.Base, error) {
    method Initial (line 117) | func (client *Client) Initial() (err error) {
    method Synchronous (line 124) | func (client *Client) Synchronous() bool {
  type Config (line 43) | type Config struct
  function New (line 65) | func New(config Config) (*Client, error) {

FILE: clients/memory/memory.go
  type Repository (line 34) | type Repository struct
    method Add (line 53) | func (r *Repository) Add(client clients.Client) {
    method Get (line 60) | func (r *Repository) Get() clients.Client {
    method SetJA3 (line 65) | func (r *Repository) SetJA3(ja3 string) error {
    method SetListener (line 72) | func (r *Repository) SetListener(listener string) error {
    method SetPadding (line 79) | func (r *Repository) SetPadding(padding string) error {
    method SetParrot (line 86) | func (r *Repository) SetParrot(parrot string) error {
  function NewRepository (line 43) | func NewRepository() *Repository {

FILE: clients/mythic/mythic.go
  type Client (line 85) | type Client struct
    method Authenticate (line 313) | func (client *Client) Authenticate(msg messages.Base) (err error) {
    method Listen (line 369) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Synchronous (line 376) | func (client *Client) Synchronous() bool {
    method Send (line 383) | func (client *Client) Send(m messages.Base) (returnMessages []messages...
    method Initial (line 470) | func (client *Client) Initial() (err error) {
    method Set (line 511) | func (client *Client) Set(key string, value string) error {
    method Get (line 543) | func (client *Client) Get(key string) string {
    method Deconstruct (line 637) | func (client *Client) Deconstruct(data []byte) (returnMessages []messa...
    method Construct (line 791) | func (client *Client) Construct(m messages.Base) ([]byte, error) {
    method convertSocksToJobs (line 1023) | func (client *Client) convertSocksToJobs(socks []Socks) (base messages...
    method convertTasksToJobs (line 1082) | func (client *Client) convertTasksToJobs(tasks []Task) (messages.Base,...
  type Config (line 109) | type Config struct
  function New (line 129) | func New(config Config) (*Client, error) {
  function getClient (line 561) | func getClient(protocol string, proxyURL string, ja3 string, parrot stri...
  function getProxy (line 1178) | func getProxy(protocol string, proxyURL string) (func(*http.Request) (*u...
  function selectIP (line 1222) | func selectIP(ips []string) string {

FILE: clients/mythic/structs.go
  constant CHECKIN (line 31) | CHECKIN = "checkin"
  constant TASKING (line 33) | TASKING = "get_tasking"
  constant RESPONSE (line 35) | RESPONSE = "post_response"
  constant StatusError (line 37) | StatusError = "error"
  constant RSAStaging (line 39) | RSAStaging = "staging_rsa"
  constant UPLOAD (line 41) | UPLOAD = "upload"
  constant DownloadInit (line 46) | DownloadInit = 300
  constant DownloadSend (line 48) | DownloadSend = 301
  type CheckIn (line 52) | type CheckIn struct
  type Response (line 71) | type Response struct
  type Error (line 78) | type Error struct
  type Tasking (line 84) | type Tasking struct
  type Tasks (line 91) | type Tasks struct
  type Task (line 98) | type Task struct
  type Job (line 106) | type Job struct
  type PostResponse (line 112) | type PostResponse struct
  type ClientTaskResponse (line 121) | type ClientTaskResponse struct
  type ServerTaskResponse (line 131) | type ServerTaskResponse struct
  type ServerPostResponse (line 139) | type ServerPostResponse struct
  type PostResponseFile (line 146) | type PostResponseFile struct
  type FileDownloadInitialMessage (line 153) | type FileDownloadInitialMessage struct
  type PostResponseDownload (line 161) | type PostResponseDownload struct
  type FileDownload (line 168) | type FileDownload struct
  type DownloadResponse (line 178) | type DownloadResponse struct
  type UploadRequest (line 185) | type UploadRequest struct
  type UploadResponse (line 196) | type UploadResponse struct
  type Socks (line 203) | type Socks struct
  type SocksParams (line 210) | type SocksParams struct

FILE: clients/repository.go
  type Repository (line 23) | type Repository interface

FILE: clients/smb/smb.go
  type Client (line 38) | type Client struct
    method Authenticate (line 63) | func (client *Client) Authenticate(messages.Base) (err error) {
    method Get (line 68) | func (client *Client) Get(string) string {
    method Initial (line 73) | func (client *Client) Initial() error {
    method Listen (line 78) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 85) | func (client *Client) Send(messages.Base) (returnMessages []messages.B...
    method Set (line 91) | func (client *Client) Set(key string, value string) error {
    method Synchronous (line 97) | func (client *Client) Synchronous() bool {
  type Config (line 42) | type Config struct
  function New (line 54) | func New(Config) (*Client, error) {

FILE: clients/smb/smb_windows.go
  constant BIND (line 70) | BIND    = 0
  constant REVERSE (line 71) | REVERSE = 1
  constant MaxSize (line 79) | MaxSize = 65535
  type Client (line 83) | type Client struct
    method Initial (line 238) | func (client *Client) Initial() (err error) {
    method Authenticate (line 256) | func (client *Client) Authenticate(msg messages.Base) (err error) {
    method Connect (line 334) | func (client *Client) Connect() (err error) {
    method Construct (line 421) | func (client *Client) Construct(msg messages.Base) (data []byte, err e...
    method Deconstruct (line 438) | func (client *Client) Deconstruct(data []byte) (messages.Base, error) {
    method Listen (line 472) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 589) | func (client *Client) Send(m messages.Base) (returnMessages []messages...
    method SendAndWait (line 699) | func (client *Client) SendAndWait(m messages.Base) (returnMessages []m...
    method Get (line 714) | func (client *Client) Get(key string) (value string) {
    method Set (line 731) | func (client *Client) Set(key string, value string) (err error) {
    method String (line 793) | func (client *Client) String() string {
    method Synchronous (line 806) | func (client *Client) Synchronous() bool {
  type Config (line 103) | type Config struct
  function New (line 115) | func New(config Config) (*Client, error) {

FILE: clients/tcp/tcp.go
  constant BIND (line 64) | BIND    = 0
  constant REVERSE (line 65) | REVERSE = 1
  type Client (line 69) | type Client struct
    method Initial (line 209) | func (client *Client) Initial() (err error) {
    method Authenticate (line 227) | func (client *Client) Authenticate(msg messages.Base) (err error) {
    method Connect (line 303) | func (client *Client) Connect() (err error) {
    method Construct (line 358) | func (client *Client) Construct(msg messages.Base) (data []byte, err e...
    method Deconstruct (line 375) | func (client *Client) Deconstruct(data []byte) (messages.Base, error) {
    method Listen (line 409) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 523) | func (client *Client) Send(m messages.Base) (returnMessages []messages...
    method SendAndWait (line 616) | func (client *Client) SendAndWait(m messages.Base) (returnMessages []m...
    method Get (line 631) | func (client *Client) Get(key string) (value string) {
    method Set (line 648) | func (client *Client) Set(key string, value string) (err error) {
    method String (line 697) | func (client *Client) String() string {
    method Synchronous (line 710) | func (client *Client) Synchronous() bool {
  type Config (line 89) | type Config struct
  function New (line 101) | func New(config Config) (*Client, error) {

FILE: clients/tcp/tcp_exclude.go
  type Client (line 38) | type Client struct
    method Authenticate (line 60) | func (client *Client) Authenticate(messages.Base) (err error) {
    method Get (line 65) | func (client *Client) Get(string) string {
    method Initial (line 70) | func (client *Client) Initial() error {
    method Listen (line 75) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 82) | func (client *Client) Send(messages.Base) (returnMessages []messages.B...
    method Set (line 88) | func (client *Client) Set(key string, value string) error {
    method Synchronous (line 94) | func (client *Client) Synchronous() bool {
  type Config (line 42) | type Config struct
  function New (line 54) | func New(Config) (*Client, error) {

FILE: clients/udp/udp.go
  constant BIND (line 64) | BIND    = 0
  constant REVERSE (line 65) | REVERSE = 1
  constant MaxSize (line 71) | MaxSize = 1450
  type Client (line 75) | type Client struct
    method Initial (line 215) | func (client *Client) Initial() (err error) {
    method Authenticate (line 231) | func (client *Client) Authenticate(msg messages.Base) (err error) {
    method Connect (line 309) | func (client *Client) Connect() (err error) {
    method Construct (line 370) | func (client *Client) Construct(msg messages.Base) (data []byte, err e...
    method Deconstruct (line 387) | func (client *Client) Deconstruct(data []byte) (messages.Base, error) {
    method Listen (line 421) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 547) | func (client *Client) Send(m messages.Base) (returnMessages []messages...
    method SendAndWait (line 663) | func (client *Client) SendAndWait(m messages.Base) (returnMessages []m...
    method Get (line 678) | func (client *Client) Get(key string) (value string) {
    method ResetListener (line 695) | func (client *Client) ResetListener() (err error) {
    method Set (line 716) | func (client *Client) Set(key string, value string) (err error) {
    method String (line 757) | func (client *Client) String() string {
    method Synchronous (line 768) | func (client *Client) Synchronous() bool {
  type Config (line 95) | type Config struct
  function New (line 107) | func New(config Config) (*Client, error) {

FILE: clients/udp/udp_exclude.go
  type Client (line 38) | type Client struct
    method Authenticate (line 60) | func (client *Client) Authenticate(messages.Base) (err error) {
    method Get (line 65) | func (client *Client) Get(string) string {
    method Initial (line 70) | func (client *Client) Initial() error {
    method Listen (line 75) | func (client *Client) Listen() (returnMessages []messages.Base, err er...
    method Send (line 82) | func (client *Client) Send(messages.Base) (returnMessages []messages.B...
    method Set (line 88) | func (client *Client) Set(key string, value string) error {
    method Synchronous (line 94) | func (client *Client) Synchronous() bool {
  type Config (line 42) | type Config struct
  function New (line 54) | func New(Config) (*Client, error) {

FILE: commands/clr.go
  function CLR (line 37) | func CLR(cmd jobs.Command) jobs.Results {

FILE: commands/clr_windows.go
  type assembly (line 56) | type assembly struct
  function CLR (line 63) | func CLR(cmd jobs.Command) jobs.Results {
  function startCLR (line 92) | func startCLR(runtime string) (results jobs.Results) {
  function loadAssembly (line 136) | func loadAssembly(args []string) (results jobs.Results) {
  function invokeAssembly (line 187) | func invokeAssembly(args []string) (results jobs.Results) {
  function listAssemblies (line 224) | func listAssemblies() (results jobs.Results) {

FILE: commands/download.go
  function Download (line 38) | func Download(transfer jobs.FileTransfer) (result jobs.Results) {

FILE: commands/env.go
  function env (line 34) | func env(Args []string) (resp string, stderr string) {

FILE: commands/exec.go
  function executeCommand (line 33) | func executeCommand(name string, args []string) (stdout string, stderr s...
  function ExecuteShellcodeSelf (line 52) | func ExecuteShellcodeSelf(shellcode []byte) error {
  function ExecuteShellcodeRemote (line 59) | func ExecuteShellcodeRemote(shellcode []byte, pid uint32) error {
  function ExecuteShellcodeRtlCreateUserThread (line 66) | func ExecuteShellcodeRtlCreateUserThread(shellcode []byte, pid uint32) e...
  function ExecuteShellcodeQueueUserAPC (line 73) | func ExecuteShellcodeQueueUserAPC([]byte, uint32) error {
  function ExecuteShellcodeCreateProcessWithPipe (line 80) | func ExecuteShellcodeCreateProcessWithPipe(string, string, string) (stdo...
  function miniDump (line 87) | func miniDump(string, string, uint32) (map[string]interface{}, error) {

FILE: commands/exec_windows.go
  function executeCommand (line 50) | func executeCommand(name string, args []string) (stdout string, stderr s...
  function executeCommandWithAttributes (line 60) | func executeCommandWithAttributes(name string, args []string, attr *sysc...
  function ExecuteShellcodeSelf (line 96) | func ExecuteShellcodeSelf(shellcode []byte) error {
  function ExecuteShellcodeRemote (line 122) | func ExecuteShellcodeRemote(shellcode []byte, pid uint32) error {
  function ExecuteShellcodeRtlCreateUserThread (line 166) | func ExecuteShellcodeRtlCreateUserThread(shellcode []byte, pid uint32) e...
  function ExecuteShellcodeQueueUserAPC (line 217) | func ExecuteShellcodeQueueUserAPC(shellcode []byte, pid uint32) error {
  function ExecuteShellcodeCreateProcessWithPipe (line 313) | func ExecuteShellcodeCreateProcessWithPipe(sc string, spawnto string, ar...
  function miniDump (line 578) | func miniDump(tempDir string, process string, inPid uint32) (map[string]...
  function getProcess (line 663) | func getProcess(name string, pid uint32) (string, uint32, error) {
  function sePrivEnable (line 703) | func sePrivEnable(s string) error {
  type PEB (line 766) | type PEB struct
  type PROCESS_BASIC_INFORMATION (line 801) | type PROCESS_BASIC_INFORMATION struct
  type IMAGE_DOS_HEADER (line 810) | type IMAGE_DOS_HEADER struct
  type IMAGE_FILE_HEADER (line 845) | type IMAGE_FILE_HEADER struct
  type IMAGE_OPTIONAL_HEADER64 (line 892) | type IMAGE_OPTIONAL_HEADER64 struct
  type IMAGE_OPTIONAL_HEADER32 (line 962) | type IMAGE_OPTIONAL_HEADER32 struct

FILE: commands/execute.go
  function ExecuteCommand (line 35) | func ExecuteCommand(cmd jobs.Command) jobs.Results {

FILE: commands/ifconfig.go
  function ifconfig (line 31) | func ifconfig() (stdout string, err error) {

FILE: commands/ifconfig_windows.go
  function ifconfig (line 32) | func ifconfig() (stdout string, err error) {

FILE: commands/link.go
  function init (line 53) | func init() {
  function Link (line 58) | func Link(cmd jobs.Command) (results jobs.Results) {
  function Connect (line 113) | func Connect(network string, args []string) (results jobs.Results) {

FILE: commands/listener.go
  constant TCP (line 45) | TCP = 0
  constant UDP (line 46) | UDP = 1
  constant SMB (line 47) | SMB = 2
  constant MaxSizeUDP (line 53) | MaxSizeUDP = 1450
  type p2pListener (line 58) | type p2pListener struct
    method String (line 65) | func (p *p2pListener) String() string {
  function Listener (line 82) | func Listener(cmd jobs.Command) (results jobs.Results) {
  function ListenTCP (line 196) | func ListenTCP(addr string) error {
  function ListenUDP (line 233) | func ListenUDP(addr string) error {
  function accept (line 262) | func accept(listener net.Listener, listenerType int) {
  function listen (line 274) | func listen(conn net.Conn, listenerType int) {
  function listenUDP (line 375) | func listenUDP(listener net.PacketConn) {

FILE: commands/memfd.go
  function Memfd (line 38) | func Memfd(cmd jobs.Command) (result jobs.Results) {

FILE: commands/memfd_linux.go
  function Memfd (line 46) | func Memfd(cmd jobs.Command) (result jobs.Results) {
  function memfile (line 102) | func memfile(name string, b []byte) (int, error) {

FILE: commands/memory.go
  function Memory (line 31) | func Memory(jobs.Command) (results jobs.Results) {

FILE: commands/memory_windows.go
  function Memory (line 41) | func Memory(cmd jobs.Command) (results jobs.Results) {

FILE: commands/modules.go
  function CreateProcess (line 39) | func CreateProcess(cmd jobs.Command) jobs.Results {
  function MiniDump (line 71) | func MiniDump(cmd jobs.Command) (jobs.FileTransfer, error) {

FILE: commands/native.go
  function Native (line 41) | func Native(cmd jobs.Command) jobs.Results {
  function list (line 134) | func list(path string) (details string, err error) {
  function nslookup (line 190) | func nslookup(query []string) (string, string) {
  function killProcess (line 213) | func killProcess(pid string) (stdout string, stderr string) {
  function rm (line 257) | func rm(path string) (stdout, stderr string) {
  function sdelete (line 291) | func sdelete(targetfile string) (resp string, stderr string) {
  function touch (line 377) | func touch(inputsourcefile string, inputdestinationfile string) (resp st...

FILE: commands/netstat.go
  function Netstat (line 35) | func Netstat(cmd jobs.Command) jobs.Results {

FILE: commands/netstat_windows.go
  function Netstat (line 41) | func Netstat(cmd jobs.Command) jobs.Results {
  type SockAddr (line 62) | type SockAddr struct
    method String (line 67) | func (s *SockAddr) String() string {
  type SockTabEntry (line 72) | type SockTabEntry struct
  type Process (line 82) | type Process struct
    method String (line 87) | func (p *Process) String() string {
  type SkState (line 92) | type SkState
    method String (line 94) | func (s SkState) String() string {
  type AcceptFn (line 100) | type AcceptFn
  function NoopFilter (line 103) | func NoopFilter(*SockTabEntry) bool { return true }
  function TCPSocks (line 107) | func TCPSocks(accept AcceptFn) ([]SockTabEntry, error) {
  function TCP6Socks (line 113) | func TCP6Socks(accept AcceptFn) ([]SockTabEntry, error) {
  function UDPSocks (line 119) | func UDPSocks(accept AcceptFn) ([]SockTabEntry, error) {
  function UDP6Socks (line 125) | func UDP6Socks(accept AcceptFn) ([]SockTabEntry, error) {
  constant errInsuffBuff (line 130) | errInsuffBuff = syscall.Errno(122)
  constant Th32csSnapProcess (line 132) | Th32csSnapProcess  = uint32(0x00000002)
  constant InvalidHandleValue (line 133) | InvalidHandleValue = ^uintptr(0)
  constant MaxPath (line 134) | MaxPath            = 260
  constant Close (line 151) | Close       SkState = 0x01
  constant Listen (line 152) | Listen              = 0x02
  constant SynSent (line 153) | SynSent             = 0x03
  constant SynRecv (line 154) | SynRecv             = 0x04
  constant Established (line 155) | Established         = 0x05
  constant FinWait1 (line 156) | FinWait1            = 0x06
  constant FinWait2 (line 157) | FinWait2            = 0x07
  constant CloseWait (line 158) | CloseWait           = 0x08
  constant Closing (line 159) | Closing             = 0x09
  constant LastAck (line 160) | LastAck             = 0x0a
  constant TimeWait (line 161) | TimeWait            = 0x0b
  constant DeleteTcb (line 162) | DeleteTcb           = 0x0c
  function memToIPv4 (line 181) | func memToIPv4(p unsafe.Pointer) net.IP {
  function memToIPv6 (line 188) | func memToIPv6(p unsafe.Pointer) net.IP {
  function memtohs (line 195) | func memtohs(n unsafe.Pointer) uint16 {
  type WinSock (line 199) | type WinSock struct
    method Sock (line 204) | func (w *WinSock) Sock() *SockAddr {
  type WinSock6 (line 210) | type WinSock6 struct
    method Sock (line 216) | func (w *WinSock6) Sock() *SockAddr {
  type MibTCPRow2 (line 222) | type MibTCPRow2 struct
    method LocalSock (line 242) | func (m *MibTCPRow2) LocalSock() *SockAddr  { return m.LocalAddr.Sock() }
    method RemoteSock (line 243) | func (m *MibTCPRow2) RemoteSock() *SockAddr { return m.RemoteAddr.Sock...
    method SockState (line 244) | func (m *MibTCPRow2) SockState() SkState    { return SkState(m.State) }
  type WinPid (line 230) | type WinPid
    method Process (line 232) | func (pid WinPid) Process(snp ProcessSnapshot) *Process {
  type MibTCPTable2 (line 246) | type MibTCPTable2 struct
    method Rows (line 251) | func (t *MibTCPTable2) Rows() []MibTCPRow2 {
  type MibTCP6Row2 (line 262) | type MibTCP6Row2 struct
    method LocalSock (line 270) | func (m *MibTCP6Row2) LocalSock() *SockAddr  { return m.LocalAddr.Sock...
    method RemoteSock (line 271) | func (m *MibTCP6Row2) RemoteSock() *SockAddr { return m.RemoteAddr.Soc...
    method SockState (line 272) | func (m *MibTCP6Row2) SockState() SkState    { return SkState(m.State) }
  type MibTCP6Table2 (line 276) | type MibTCP6Table2 struct
    method Rows (line 281) | func (t *MibTCP6Table2) Rows() []MibTCP6Row2 {
  type MibUDPRowOwnerPID (line 294) | type MibUDPRowOwnerPID struct
    method LocalSock (line 299) | func (m *MibUDPRowOwnerPID) LocalSock() *SockAddr  { return m.Sock() }
    method RemoteSock (line 300) | func (m *MibUDPRowOwnerPID) RemoteSock() *SockAddr { return &SockAddr{...
    method SockState (line 301) | func (m *MibUDPRowOwnerPID) SockState() SkState    { return Close }
  type MibUDPTableOwnerPID (line 307) | type MibUDPTableOwnerPID struct
    method Rows (line 312) | func (t *MibUDPTableOwnerPID) Rows() []MibUDPRowOwnerPID {
  type MibUDP6RowOwnerPID (line 323) | type MibUDP6RowOwnerPID struct
    method LocalSock (line 328) | func (m *MibUDP6RowOwnerPID) LocalSock() *SockAddr  { return m.Sock() }
    method RemoteSock (line 329) | func (m *MibUDP6RowOwnerPID) RemoteSock() *SockAddr { return &SockAddr...
    method SockState (line 330) | func (m *MibUDP6RowOwnerPID) SockState() SkState    { return Close }
  type MibUDP6TableOwnerPID (line 333) | type MibUDP6TableOwnerPID struct
    method Rows (line 338) | func (t *MibUDP6TableOwnerPID) Rows() []MibUDP6RowOwnerPID {
  type Processentry32 (line 349) | type Processentry32 struct
  function rawGetTCPTable2 (line 362) | func rawGetTCPTable2(proc uintptr, tab unsafe.Pointer, size *uint32, ord...
  function getTCPTable2 (line 382) | func getTCPTable2(proc uintptr, order bool) ([]byte, error) {
  function GetTCPTable2 (line 403) | func GetTCPTable2(order bool) (*MibTCPTable2, error) {
  function GetTCP6Table2 (line 412) | func GetTCP6Table2(order bool) (*MibTCP6Table2, error) {
  type UDPTableClass (line 422) | type UDPTableClass
  constant UDPTableBasic (line 426) | UDPTableBasic UDPTableClass = iota
  constant UDPTableOwnerPID (line 427) | UDPTableOwnerPID
  constant UDPTableOwnerModule (line 428) | UDPTableOwnerModule
  function getExtendedUDPTable (line 431) | func getExtendedUDPTable(table unsafe.Pointer, size *uint32, order bool,...
  function GetExtendedUDPTable (line 456) | func GetExtendedUDPTable(order bool, af uint32, cl UDPTableClass) ([]byt...
  function GetUDPTableOwnerPID (line 470) | func GetUDPTableOwnerPID(order bool) (*MibUDPTableOwnerPID, error) {
  function GetUDP6TableOwnerPID (line 478) | func GetUDP6TableOwnerPID(order bool) (*MibUDP6TableOwnerPID, error) {
  type ProcessSnapshot (line 488) | type ProcessSnapshot
    method ProcPIDToName (line 509) | func (snp ProcessSnapshot) ProcPIDToName(pid uint32) string {
    method Close (line 529) | func (snp ProcessSnapshot) Close() error {
  function CreateToolhelp32Snapshot (line 492) | func CreateToolhelp32Snapshot(flags uint32, pid uint32) (ProcessSnapshot...
  function Process32First (line 535) | func Process32First(handle syscall.Handle, pe *Processentry32) error {
  function Process32Next (line 553) | func Process32Next(handle syscall.Handle, pe *Processentry32) error {
  function StringFromNullTerminated (line 570) | func StringFromNullTerminated(b []byte) string {
  type winSockEnt (line 578) | type winSockEnt interface
  function toSockTabEntry (line 585) | func toSockTabEntry(ws winSockEnt, snp ProcessSnapshot) SockTabEntry {
  function osTCPSocks (line 594) | func osTCPSocks(accept AcceptFn) ([]SockTabEntry, error) {
  function osTCP6Socks (line 615) | func osTCP6Socks(accept AcceptFn) ([]SockTabEntry, error) {
  function osUDPSocks (line 636) | func osUDPSocks(accept AcceptFn) ([]SockTabEntry, error) {
  function osUDP6Socks (line 657) | func osUDP6Socks(accept AcceptFn) ([]SockTabEntry, error) {
  constant protoIPv4 (line 679) | protoIPv4 = 0x01
  constant protoIPv6 (line 680) | protoIPv6 = 0x02
  function netstat (line 684) | func netstat(filter string) (stdout string, stderr string) {

FILE: commands/os.go
  function Setup (line 28) | func Setup() error {
  function TearDown (line 34) | func TearDown() error {

FILE: commands/os_windows.go
  function Setup (line 35) | func Setup() error {
  function TearDown (line 42) | func TearDown() error {

FILE: commands/pipes.go
  function Pipes (line 33) | func Pipes() jobs.Results {

FILE: commands/pipes_windows.go
  function Pipes (line 38) | func Pipes() jobs.Results {
  function getPipes (line 54) | func getPipes() (stdout string, stderr string) {

FILE: commands/ps.go
  function PS (line 34) | func PS() jobs.Results {

FILE: commands/ps_windows.go
  type Process1 (line 39) | type Process1 interface
  type WindowsProcess (line 55) | type WindowsProcess struct
    method Pid (line 63) | func (p *WindowsProcess) Pid() int {
    method PPid (line 67) | func (p *WindowsProcess) PPid() int {
    method Executable (line 71) | func (p *WindowsProcess) Executable() string {
    method Owner (line 75) | func (p *WindowsProcess) Owner() string {
    method Arch (line 79) | func (p *WindowsProcess) Arch() string {
  function newWindowsProcess (line 83) | func newWindowsProcess(e *syscall.ProcessEntry32) *WindowsProcess {
  function findProcess (line 115) | func findProcess(pid int) (Process1, error) {
  function getInfo (line 131) | func getInfo(t syscall.Token, class uint32, initSize int) (unsafe.Pointe...
  function getTokenUser (line 149) | func getTokenUser(t syscall.Token) (*syscall.Tokenuser, error) {
  function getProcessOwner (line 157) | func getProcessOwner(pid uint32) (owner string, err error) {
  function IsWow64Process (line 178) | func IsWow64Process(processHandle syscall.Handle) (bool, error) {
  function getProcesses (line 192) | func getProcesses() ([]Process1, error) {
  function PS (line 219) | func PS() jobs.Results {

FILE: commands/runas.go
  function RunAs (line 32) | func RunAs(cmd jobs.Command) (results jobs.Results) {

FILE: commands/runas_windows.go
  function RunAs (line 44) | func RunAs(cmd jobs.Command) (results jobs.Results) {

FILE: commands/shell.go
  function shell (line 31) | func shell(args []string) (stdout string, stderr string) {

FILE: commands/shell_darwin.go
  function shell (line 32) | func shell(args []string) (stdout string, stderr string) {

FILE: commands/shell_freebsd.go
  function shell (line 32) | func shell(args []string) (stdout string, stderr string) {

FILE: commands/shell_linux.go
  function shell (line 32) | func shell(args []string) (stdout string, stderr string) {

FILE: commands/shell_windows.go
  function shell (line 31) | func shell(args []string) (stdout string, stderr string) {

FILE: commands/shellcode.go
  function ExecuteShellcode (line 36) | func ExecuteShellcode(cmd jobs.Shellcode) jobs.Results {

FILE: commands/smb.go
  function ConnectSMB (line 37) | func ConnectSMB(host, pipe string) (results jobs.Results) {
  function ListenSMB (line 43) | func ListenSMB(pipe string) error {

FILE: commands/smb_windows.go
  function ConnectSMB (line 33) | func ConnectSMB(host, pipe string) (results jobs.Results) {
  function ListenSMB (line 141) | func ListenSMB(pipe string) error {

FILE: commands/ssh.go
  function SSH (line 40) | func SSH(command jobs.Command) (results jobs.Results) {

FILE: commands/tokens.go
  function Token (line 37) | func Token(cmd jobs.Command) jobs.Results {

FILE: commands/tokens_windows.go
  function Token (line 44) | func Token(cmd jobs.Command) jobs.Results {
  function listPrivileges (line 96) | func listPrivileges(processID string) (results jobs.Results) {
  function makeToken (line 170) | func makeToken(username, password string) (results jobs.Results) {
  function rev2self (line 193) | func rev2self() (results jobs.Results) {
  function stealToken (line 206) | func stealToken(pid uint32) (results jobs.Results) {
  function whoami (line 266) | func whoami() (results jobs.Results) {

FILE: commands/unlink.go
  function Unlink (line 21) | func Unlink(cmd jobs.Command) (results jobs.Results) {

FILE: commands/upload.go
  function Upload (line 40) | func Upload(transfer jobs.FileTransfer) (ft jobs.FileTransfer, err error) {

FILE: commands/uptime.go
  function Uptime (line 34) | func Uptime() jobs.Results {

FILE: commands/uptime_windows.go
  function Uptime (line 39) | func Uptime() jobs.Results {

FILE: core/core.go
  constant letterIdxBits (line 52) | letterIdxBits = 6
  constant letterIdxMask (line 53) | letterIdxMask = 1<<letterIdxBits - 1
  constant letterIdxMax (line 54) | letterIdxMax  = 63 / letterIdxBits
  constant letterBytes (line 55) | letterBytes   = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  function RandStringBytesMaskImprSrc (line 59) | func RandStringBytesMaskImprSrc(n int) string {

FILE: http/http.go
  type Type (line 39) | type Type
    method String (line 127) | func (t Type) String() string {
  constant UNDEFINED (line 44) | UNDEFINED Type = iota
  constant HTTP (line 46) | HTTP
  constant HTTPS (line 48) | HTTPS
  constant H2C (line 50) | H2C
  constant HTTP2 (line 52) | HTTP2
  constant HTTP3 (line 54) | HTTP3
  constant WINHTTP (line 56) | WINHTTP
  constant WININET (line 58) | WININET
  constant JA3 (line 60) | JA3
  constant PARROT (line 62) | PARROT
  type Config (line 66) | type Config struct
  type Client (line 78) | type Client interface
  function NewHTTPClient (line 83) | func NewHTTPClient(config Config) (client Client, err error) {

FILE: http/http1/http1.go
  function NewHTTPClient (line 40) | func NewHTTPClient(protocol, proxyURL string, insecure bool) (*http.Clie...

FILE: http/http1/http1_exclude.go
  function NewHTTPClient (line 32) | func NewHTTPClient(protocol, proxyURL string, insecure bool) (*http.Clie...

FILE: http/http2/http2.go
  function NewHTTPClient (line 43) | func NewHTTPClient(protocol string, insecure bool) (*http.Client, error) {

FILE: http/http2/http2_exclude.go
  function NewHTTPClient (line 36) | func NewHTTPClient(protocol string, insecure bool) (*http.Client, error) {

FILE: http/http3/http3.go
  function NewHTTPClient (line 42) | func NewHTTPClient(insecure bool) (*http.Client, error) {

FILE: http/http3/http3_exclude.go
  function NewHTTPClient (line 35) | func NewHTTPClient(insecure bool) (*http.Client, error) {

FILE: http/proxy/proxy.go
  function GetProxy (line 37) | func GetProxy(protocol string, proxyURL string) (func(*http.Request) (*u...

FILE: http/utls/utls.go
  function NewTransportFromJA3 (line 128) | func NewTransportFromJA3(ja3 string, InsecureSkipVerify bool, proxy func...
  function NewTransportFromParrot (line 150) | func NewTransportFromParrot(parrot string, InsecureSkipVerify bool, prox...
  function JA3toClientHello (line 171) | func JA3toClientHello(ja3 string) (*tls.ClientHelloSpec, error) {
  function ParrotStringToClientHelloID (line 265) | func ParrotStringToClientHelloID(parrot string) (clientHello tls.ClientH...
  type dialer (line 353) | type dialer struct
    method DialContext (line 363) | func (d *dialer) DialContext(ctx context.Context, network, address str...
  type Transport (line 382) | type Transport struct
    method RoundTrip (line 393) | func (t *Transport) RoundTrip(req *http.Request) (*http.Response, erro...
    method tlsConnect (line 487) | func (t *Transport) tlsConnect(conn net.Conn, req *http.Request) (*tls...
  function CustomPaddingStyle (line 516) | func CustomPaddingStyle(unpaddedLen int) (int, bool) {

FILE: http/winhttp/winhttp_exclude.go
  function NewHTTPClient (line 36) | func NewHTTPClient(protocol, proxyURL string, insecure bool) (*http.Clie...

FILE: http/winhttp/winhttp_windows.go
  function NewHTTPClient (line 40) | func NewHTTPClient(protocol, proxyURL string, insecure bool) (*winhttp2....

FILE: main.go
  function main (line 124) | func main() {
  function usage (line 338) | func usage() {
  function getArgsFromStdIn (line 345) | func getArgsFromStdIn(input chan string, verbose bool) {

FILE: os/os.go
  function GetIntegrityLevel (line 31) | func GetIntegrityLevel() (integrity int, err error) {
  function GetUser (line 63) | func GetUser() (username, group string, err error) {

FILE: os/os_windows.go
  function GetIntegrityLevel (line 36) | func GetIntegrityLevel() (integrity int, err error) {
  function GetUser (line 66) | func GetUser() (username, group string, err error) {

FILE: os/windows/api/advapi32/advapi32.go
  function CreateProcessWithLogon (line 41) | func CreateProcessWithLogon(lpUsername *uint16, lpDomain *uint16, lpPass...
  function CreateProcessWithTokenW (line 108) | func CreateProcessWithTokenW(hToken, dwLogonFlags, lpApplicationName, lp...
  function ImpersonateLoggedOnUser (line 142) | func ImpersonateLoggedOnUser(hToken windows.Token) (err error) {
  function LogonUser (line 163) | func LogonUser(lpszUsername *uint16, lpszDomain *uint16, lpszPassword *u...
  function LookupPrivilegeName (line 196) | func LookupPrivilegeName(luid windows.LUID) (privilege string, err error) {

FILE: os/windows/api/kernel32/kernel32.go
  function CreateRemoteThreadEx (line 50) | func CreateRemoteThreadEx(hProcess uintptr, lpThreadAttributes uintptr, ...
  function QueueUserAPC (line 70) | func QueueUserAPC(pfnAPC uintptr, hThread uintptr, dwData uintptr) (err ...
  function VirtualAllocEx (line 93) | func VirtualAllocEx(hProcess uintptr, lpAddress uintptr, dwSize int, flA...

FILE: os/windows/api/ntdll/ntdll.go
  function RtlCopyMemory (line 42) | func RtlCopyMemory(dest uintptr, src uintptr, len uint32) (err error) {
  function RtlCreateUserThread (line 70) | func RtlCreateUserThread(hProcess uintptr, lpSecurityDescriptor, bSuspen...

FILE: os/windows/api/user32/user32.go
  function GetProcessWindowStation (line 39) | func GetProcessWindowStation() (hWinsta uintptr, err error) {
  function GetThreadDesktop (line 54) | func GetThreadDesktop(threadID uint32) (hDesktop uintptr, err error) {

FILE: os/windows/pkg/evasion/evasion.go
  function Patch (line 40) | func Patch(module string, proc string, data *[]byte) (string, error) {
  function Read (line 66) | func Read(module string, proc string, byteLength int) ([]byte, error) {
  function ReadBanana (line 85) | func ReadBanana(module string, proc string, byteLength int) ([]byte, err...
  function Write (line 110) | func Write(module string, proc string, data *[]byte) error {
  function WriteBanana (line 141) | func WriteBanana(module string, proc string, data *[]byte) error {

FILE: os/windows/pkg/evasion/evasion_386.go
  function Patch (line 32) | func Patch(module string, proc string, data *[]byte) (string, error) {
  function Read (line 37) | func Read(module string, proc string, byteLength int) ([]byte, error) {
  function ReadBanana (line 43) | func ReadBanana(module string, proc string, byteLength int) ([]byte, err...
  function Write (line 48) | func Write(module string, proc string, data *[]byte) error {
  function WriteBanana (line 54) | func WriteBanana(module string, proc string, data *[]byte) error {

FILE: os/windows/pkg/pipes/pipes.go
  function CreateAnonymousPipes (line 38) | func CreateAnonymousPipes() (stdInRead, stdInWrite, stdOutRead, stdOutWr...
  function ClosePipes (line 70) | func ClosePipes(stdInRead, stdInWrite, stdOutRead, stdOutWrite, stdErrRe...
  function ReadPipes (line 130) | func ReadPipes(stdInRead, stdOutRead, stdErrRead windows.Handle) (stdin,...

FILE: os/windows/pkg/processes/processes.go
  constant LOGON_WITH_PROFILE (line 42) | LOGON_WITH_PROFILE        uint32 = 0x1
  constant LOGON_NETCREDENTIALS_ONLY (line 43) | LOGON_NETCREDENTIALS_ONLY uint32 = 0x2
  function CreateProcessWithLogon (line 50) | func CreateProcessWithLogon(username string, domain string, password str...

FILE: os/windows/pkg/text/text.go
  function DecodeString (line 41) | func DecodeString(encoded []byte) (decoded string, err error) {

FILE: os/windows/pkg/tokens/tokens.go
  constant LOGON32_LOGON_INTERACTIVE (line 48) | LOGON32_LOGON_INTERACTIVE       uint32 = 2
  constant LOGON32_LOGON_NETWORK (line 49) | LOGON32_LOGON_NETWORK           uint32 = 3
  constant LOGON32_LOGON_BATCH (line 50) | LOGON32_LOGON_BATCH             uint32 = 4
  constant LOGON32_LOGON_SERVICE (line 51) | LOGON32_LOGON_SERVICE           uint32 = 5
  constant LOGON32_LOGON_UNLOCK (line 52) | LOGON32_LOGON_UNLOCK            uint32 = 7
  constant LOGON32_LOGON_NETWORK_CLEARTEXT (line 53) | LOGON32_LOGON_NETWORK_CLEARTEXT uint32 = 8
  constant LOGON32_LOGON_NEW_CREDENTIALS (line 54) | LOGON32_LOGON_NEW_CREDENTIALS   uint32 = 9
  constant LOGON32_PROVIDER_DEFAULT (line 60) | LOGON32_PROVIDER_DEFAULT uint32 = iota
  constant LOGON32_PROVIDER_WINNT35 (line 61) | LOGON32_PROVIDER_WINNT35
  constant LOGON32_PROVIDER_WINNT40 (line 62) | LOGON32_PROVIDER_WINNT40
  constant LOGON32_PROVIDER_WINNT50 (line 63) | LOGON32_PROVIDER_WINNT50
  constant LOGON32_PROVIDER_VIRTUAL (line 64) | LOGON32_PROVIDER_VIRTUAL
  constant LOGON_WITH_PROFILE (line 69) | LOGON_WITH_PROFILE        uint32 = 0x1
  constant LOGON_NETCREDENTIALS_ONLY (line 70) | LOGON_NETCREDENTIALS_ONLY uint32 = 0x2
  function ApplyToken (line 76) | func ApplyToken() error {
  function CreateProcessWithToken (line 90) | func CreateProcessWithToken(hToken windows.Token, application string, ar...
  function GetCurrentUserAndGroup (line 385) | func GetCurrentUserAndGroup() (username, group string, err error) {
  function GetTokenIntegrityLevel (line 402) | func GetTokenIntegrityLevel(token windows.Token) (string, error) {
  function GetTokenPrivileges (line 434) | func GetTokenPrivileges(token windows.Token) (privs []windows.LUIDAndAtt...
  function GetTokenStats (line 475) | func GetTokenStats(token windows.Token) (tokenStats TOKEN_STATISTICS, er...
  function GetTokenUsername (line 510) | func GetTokenUsername(token windows.Token) (username string, err error) {
  function GetTokenSessionId (line 527) | func GetTokenSessionId(token windows.Token) (sessionId uint32, err error) {
  function hasPrivilege (line 556) | func hasPrivilege(token windows.Token, privilege windows.LUID) (has bool...
  function integrityLevelToString (line 605) | func integrityLevelToString(level uint32) string {
  function ImpersonationToString (line 627) | func ImpersonationToString(level uint32) string {
  function LogonUser (line 644) | func LogonUser(user string, password string, domain string, logonType ui...
  function PrivilegeAttributeToString (line 713) | func PrivilegeAttributeToString(attribute uint32) string {
  function PrivilegeToString (line 736) | func PrivilegeToString(priv windows.LUID) string {
  function TokenTypeToString (line 745) | func TokenTypeToString(tokenType uint32) string {
  type TOKEN_STATISTICS (line 773) | type TOKEN_STATISTICS struct

FILE: p2p/memory/memory.go
  type Repository (line 38) | type Repository struct
    method Delete (line 57) | func (r *Repository) Delete(id uuid.UUID) {
    method Get (line 62) | func (r *Repository) Get(id uuid.UUID) (link *p2p.Link, err error) {
    method GetAll (line 73) | func (r *Repository) GetAll() (links []*p2p.Link) {
    method Store (line 85) | func (r *Repository) Store(link *p2p.Link) {
    method UpdateConn (line 90) | func (r *Repository) UpdateConn(id uuid.UUID, conn interface{}, remote...
  function NewRepository (line 47) | func NewRepository() *Repository {

FILE: p2p/p2p.go
  constant TCPBIND (line 39) | TCPBIND    = 0
  constant TCPREVERSE (line 40) | TCPREVERSE = 1
  constant UDPBIND (line 41) | UDPBIND    = 2
  constant UDPREVERSE (line 42) | UDPREVERSE = 3
  constant SMBBIND (line 43) | SMBBIND    = 4
  constant SMBREVERSE (line 44) | SMBREVERSE = 5
  constant MaxSizeUDP (line 50) | MaxSizeUDP = 1450
  constant MaxSizeSMB (line 55) | MaxSizeSMB = 65535
  type Link (line 59) | type Link struct
    method AddIn (line 85) | func (l *Link) AddIn(base messages.Base) {
    method AddOut (line 91) | func (l *Link) AddOut(base messages.Base) {
    method Conn (line 96) | func (l *Link) Conn() interface{} {
    method GetIn (line 101) | func (l *Link) GetIn() messages.Base {
    method GetOut (line 106) | func (l *Link) GetOut() messages.Base {
    method ID (line 111) | func (l *Link) ID() uuid.UUID {
    method Listener (line 116) | func (l *Link) Listener() uuid.UUID {
    method Type (line 121) | func (l *Link) Type() int {
    method Remote (line 126) | func (l *Link) Remote() net.Addr {
    method UpdateConn (line 132) | func (l *Link) UpdateConn(conn interface{}, remote net.Addr) {
    method String (line 138) | func (l *Link) String() string {
  function NewLink (line 71) | func NewLink(id uuid.UUID, listener uuid.UUID, conn interface{}, linkTyp...
  function String (line 143) | func String(linkType int) string {

FILE: p2p/repository.go
  type Repository (line 31) | type Repository interface

FILE: run/run.go
  function Run (line 49) | func Run(a agent.Agent, c clients.Client) {
  function checkIn (line 133) | func checkIn() {
  function listen (line 209) | func listen() {

FILE: services/agent/agent.go
  type Service (line 39) | type Service struct
    method Add (line 69) | func (s *Service) Add(agent agent.Agent) {
    method AgentInfo (line 74) | func (s *Service) AgentInfo() messages.AgentInfo {
    method Get (line 112) | func (s *Service) Get() agent.Agent {
    method IncrementFailed (line 117) | func (s *Service) IncrementFailed() {
    method SetAuthenticated (line 125) | func (s *Service) SetAuthenticated(authenticated bool) {
    method SetFailedCheckIn (line 130) | func (s *Service) SetFailedCheckIn(failed int) {
    method SetInitialCheckIn (line 135) | func (s *Service) SetInitialCheckIn(checkin time.Time) {
    method SetKillDate (line 140) | func (s *Service) SetKillDate(date int64) {
    method SetMaxRetry (line 145) | func (s *Service) SetMaxRetry(retries int) {
    method SetSkew (line 150) | func (s *Service) SetSkew(skew int64) {
    method SetSleep (line 155) | func (s *Service) SetSleep(sleep time.Duration) {
    method SetStatusCheckIn (line 160) | func (s *Service) SetStatusCheckIn(checkin time.Time) {
  function NewAgentService (line 48) | func NewAgentService() *Service {
  function withAgentMemoryRepository (line 59) | func withAgentMemoryRepository() agent.Repository {
  function withClientMemoryRepository (line 64) | func withClientMemoryRepository() clients.Repository {

FILE: services/client/client.go
  type Service (line 34) | type Service struct
    method Add (line 57) | func (s *Service) Add(client clients.Client) {
    method Authenticate (line 63) | func (s *Service) Authenticate(msg messages.Base) error {
    method Connect (line 68) | func (s *Service) Connect(addr string) (err error) {
    method Get (line 75) | func (s *Service) Get() clients.Client {
    method Initial (line 80) | func (s *Service) Initial() error {
    method Listen (line 85) | func (s *Service) Listen() ([]messages.Base, error) {
    method Reset (line 90) | func (s *Service) Reset() (err error) {
    method Send (line 103) | func (s *Service) Send(msg messages.Base) ([]messages.Base, error) {
    method SetJA3 (line 108) | func (s *Service) SetJA3(ja3 string) error {
    method SetListener (line 113) | func (s *Service) SetListener(listener string) error {
    method SetPadding (line 118) | func (s *Service) SetPadding(padding string) error {
    method SetParrot (line 123) | func (s *Service) SetParrot(parrot string) error {
    method Synchronous (line 128) | func (s *Service) Synchronous() bool {
  function NewClientService (line 42) | func NewClientService() *Service {
  function withMemoryClientRepo (line 52) | func withMemoryClientRepo() clients.Repository {

FILE: services/job/job.go
  type Service (line 47) | type Service struct
    method AddResult (line 80) | func (s *Service) AddResult(agent uuid.UUID, stdOut, stdErr string) {
    method Get (line 95) | func (s *Service) Get() []jobs.Job {
    method Check (line 103) | func (s *Service) Check() (returnJobs []jobs.Job) {
    method Control (line 119) | func (s *Service) Control(job jobs.Job) {
    method Handle (line 282) | func (s *Service) Handle(Jobs []jobs.Job) {
  function init (line 62) | func init() {
  function NewJobService (line 68) | func NewJobService(agentID uuid.UUID) *Service {
  function execute (line 326) | func execute() {

FILE: services/message/message.go
  type Service (line 43) | type Service struct
    method Check (line 70) | func (s *Service) Check() (msg messages.Base) {
    method Get (line 92) | func (s *Service) Get() (msg messages.Base) {
    method GetDelegates (line 102) | func (s *Service) GetDelegates() {
    method GetJobs (line 118) | func (s *Service) GetJobs() {
    method Handle (line 133) | func (s *Service) Handle(msg messages.Base) (err error) {
    method Store (line 171) | func (s *Service) Store(msg messages.Base) {
  function NewMessageService (line 57) | func NewMessageService(agent uuid.UUID) *Service {

FILE: services/p2p/p2p.go
  type Service (line 48) | type Service struct
    method AddDelegate (line 74) | func (s *Service) AddDelegate(delegate messages.Delegate) {
    method AddLink (line 81) | func (s *Service) AddLink(link *p2p.Link) {
    method Connected (line 86) | func (s *Service) Connected(agentType int, ip string) (*p2p.Link, bool) {
    method Delete (line 97) | func (s *Service) Delete(id uuid.UUID) {
    method GetLink (line 102) | func (s *Service) GetLink(id uuid.UUID) (*p2p.Link, error) {
    method GetDelegates (line 107) | func (s *Service) GetDelegates() []messages.Delegate {
    method Check (line 113) | func (s *Service) Check() (delegates []messages.Delegate) {
    method Handle (line 126) | func (s *Service) Handle(delegates []messages.Delegate) {
    method List (line 250) | func (s *Service) List() (list string) {
    method Refresh (line 261) | func (s *Service) Refresh() (list string) {
    method Remove (line 273) | func (s *Service) Remove(id uuid.UUID) error {
    method UpdateConnection (line 295) | func (s *Service) UpdateConnection(id uuid.UUID, conn interface{}, rem...
  function NewP2PService (line 59) | func NewP2PService() *Service {
  function withP2PMemoryRepository (line 69) | func withP2PMemoryRepository() p2p.Repository {

FILE: socks/socks.go
  function Handler (line 46) | func Handler(msg jobs.Job, jobsOut *chan jobs.Job) {
  function newSOCKSServer (line 90) | func newSOCKSServer() (err error) {
  function start (line 102) | func start(id uuid.UUID) {
  function listen (line 119) | func listen(id uuid.UUID) {
  function send (line 175) | func send(id uuid.UUID) {
  type Connection (line 242) | type Connection struct

FILE: transformers/encoders/base64/base64.go
  constant BYTE (line 30) | BYTE   = 0
  constant STRING (line 31) | STRING = 1
  type Coder (line 34) | type Coder struct
    method Construct (line 44) | func (c *Coder) Construct(data any, key []byte) (retData []byte, err e...
    method Deconstruct (line 56) | func (c *Coder) Deconstruct(data, key []byte) (any, error) {
    method String (line 69) | func (c *Coder) String() string {
  function NewEncoder (line 39) | func NewEncoder(concrete int) *Coder {

FILE: transformers/encoders/gob/gob.go
  constant STRING (line 35) | STRING   = 0
  constant BASE (line 36) | BASE     = 1
  constant DELEGATE (line 37) | DELEGATE = 2
  type Coder (line 40) | type Coder struct
    method Construct (line 50) | func (c *Coder) Construct(data any, key []byte) ([]byte, error) {
    method Deconstruct (line 55) | func (c *Coder) Deconstruct(data, key []byte) (any, error) {
    method Encode (line 61) | func (c *Coder) Encode(e any) ([]byte, error) {
    method Decode (line 94) | func (c *Coder) Decode(data []byte) (any, error) {
    method String (line 116) | func (c *Coder) String() string {
  function NewEncoder (line 45) | func NewEncoder(concrete int) *Coder {

FILE: transformers/encoders/hex/hex.go
  constant BYTE (line 30) | BYTE   = 0
  constant STRING (line 31) | STRING = 1
  type Coder (line 34) | type Coder struct
    method Construct (line 44) | func (c *Coder) Construct(data any, key []byte) (retData []byte, err e...
    method Deconstruct (line 59) | func (c *Coder) Deconstruct(data, key []byte) (any, error) {
    method String (line 76) | func (c *Coder) String() string {
  function NewEncoder (line 39) | func NewEncoder(concrete int) *Coder {

FILE: transformers/encoders/mythic/mythic.go
  type Coder (line 32) | type Coder struct
    method Construct (line 42) | func (c *Coder) Construct(data any, id []byte) ([]byte, error) {
    method Deconstruct (line 57) | func (c *Coder) Deconstruct(data, id []byte) (any, error) {
    method String (line 73) | func (c *Coder) String() string {
  function NewEncoder (line 36) | func NewEncoder() *Coder {

FILE: transformers/encrypters/aes/aes.go
  type Encrypter (line 36) | type Encrypter struct
    method Construct (line 45) | func (e *Encrypter) Construct(data any, key []byte) ([]byte, error) {
    method Deconstruct (line 55) | func (e *Encrypter) Deconstruct(data, key []byte) (any, error) {
    method String (line 154) | func (e *Encrypter) String() string {
  function NewEncrypter (line 40) | func NewEncrypter() *Encrypter {
  function encrypt (line 60) | func encrypt(plaintext []byte, key []byte) ([]byte, error) {
  function decrypt (line 103) | func decrypt(ciphertext []byte, key []byte) ([]byte, error) {

FILE: transformers/encrypters/jwe/jwe.go
  type Encrypter (line 32) | type Encrypter struct
    method Construct (line 45) | func (e *Encrypter) Construct(data any, key []byte) ([]byte, error) {
    method Deconstruct (line 56) | func (e *Encrypter) Deconstruct(data, key []byte) (any, error) {
    method encrypt (line 72) | func (e *Encrypter) encrypt(data, key []byte) ([]byte, error) {
    method String (line 115) | func (e *Encrypter) String() string {
  function NewEncrypter (line 36) | func NewEncrypter() *Encrypter {

FILE: transformers/encrypters/rc4/rc4.go
  type Encrypter (line 30) | type Encrypter struct
    method Construct (line 39) | func (e *Encrypter) Construct(data any, key []byte) (retData []byte, e...
    method Deconstruct (line 49) | func (e *Encrypter) Deconstruct(data, key []byte) (any, error) {
    method String (line 64) | func (e *Encrypter) String() string {
  function NewEncrypter (line 34) | func NewEncrypter() *Encrypter {
  function xor (line 53) | func xor(data, key []byte) (retData []byte, err error) {

FILE: transformers/encrypters/xor/xor.go
  type Encrypter (line 29) | type Encrypter struct
    method Construct (line 38) | func (e *Encrypter) Construct(data any, key []byte) ([]byte, error) {
    method Deconstruct (line 48) | func (e *Encrypter) Deconstruct(data, key []byte) (any, error) {
    method String (line 61) | func (e *Encrypter) String() string {
  function NewEncrypter (line 33) | func NewEncrypter() *Encrypter {
  function xor (line 52) | func xor(data, key []byte) (retData []byte, err error) {

FILE: transformers/transformer.go
  type Transformer (line 25) | type Transformer interface
Condensed preview — 127 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,679K chars).
[
  {
    "path": ".gitattributes",
    "chars": 25,
    "preview": "*.go linguist-language=Go"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 981,
    "preview": "# This workflow will build a golang project\n# For more information see: https://docs.github.com/en/actions/automating-bu"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 3842,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/qodana.yml",
    "chars": 937,
    "preview": "name: \"Qodana: Push\"\non:\n  workflow_dispatch:\n  push:\n    paths-ignore:\n      - '.github/**'\n      - '.qodana/**'\n      "
  },
  {
    "path": ".github/workflows/qodana_pr.yml",
    "chars": 953,
    "preview": "name: \"Qodana: Pull Request\"\n\non:\n  workflow_dispatch:\n  pull_request:\n    paths-ignore:\n      - '.github/**'\n      - '."
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1003,
    "preview": "name: \"Merlin Agent Release\"\n\non:\n  workflow_dispatch:\n  push:\n    branches:\n      - \"main\"\n    tags:\n      - 'v*.*.*'\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 31,
    "preview": ".DS_STORE\n.idea/\nagent/data\nbin"
  },
  {
    "path": ".qodana/qodana.sarif.json",
    "chars": 821296,
    "preview": "{\n  \"$schema\": \"https://raw.githubusercontent.com/schemastore/schemastore/master/src/schemas/json/sarif-2.1.0-rtm.5.json"
  },
  {
    "path": "LICENSE",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "Makefile",
    "chars": 7137,
    "preview": "# !!!MAKE SURE YOUR GOPATH ENVIRONMENT VARIABLE IS SET FIRST!!!\n\n# Agent file names\nW=Windows-x64\nL=Linux-x64\nB=FreeBSD-"
  },
  {
    "path": "README.md",
    "chars": 1275,
    "preview": "[![AppVeyor](https://ci.appveyor.com/api/projects/status/xi0n3ucm5i234ios/branch/master?svg=true)](https://ci.appveyor.c"
  },
  {
    "path": "agent/agent.go",
    "chars": 10101,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "agent/memory/memory.go",
    "chars": 3936,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "agent/repository.go",
    "chars": 2460,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "agent/structs.go",
    "chars": 2808,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "authenticators/authenticaters.go",
    "chars": 1601,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "authenticators/none/none.go",
    "chars": 1732,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "authenticators/opaque/opaque.go",
    "chars": 13610,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "authenticators/rsa/rsa.go",
    "chars": 4091,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "cli/cli.go",
    "chars": 2153,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "clients/clients.go",
    "chars": 2168,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "clients/http/http.go",
    "chars": 30073,
    "preview": "//go:build http || http1 || http2 || http3 || winhttp || mythic || !(smb || tcp || udp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "clients/http/http_exclude.go",
    "chars": 6582,
    "preview": "//go:build !http && !http1 && !http2 && !http3 && !winhttp && !mythic && (smb || tcp || udp)\n\n/*\nMerlin is a post-exploi"
  },
  {
    "path": "clients/memory/memory.go",
    "chars": 2610,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "clients/mythic/mythic.go",
    "chars": 44735,
    "preview": "//go:build mythic\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrig"
  },
  {
    "path": "clients/mythic/structs.go",
    "chars": 9348,
    "preview": "//go:build mythic\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrig"
  },
  {
    "path": "clients/repository.go",
    "chars": 1366,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "clients/smb/smb.go",
    "chars": 4504,
    "preview": "//go:build (!smb && (http || http1 || http2 || http3 || mythic || winhttp || tcp || udp)) || (!smb && !windows)\n\n/*\nMerl"
  },
  {
    "path": "clients/smb/smb_windows.go",
    "chars": 32050,
    "preview": "//go:build smb || !(http || http1 || http2 || http3 || mythic || winhttp || tcp || udp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "clients/tcp/tcp.go",
    "chars": 27906,
    "preview": "//go:build tcp || !(http || http1 || http2 || http3 || mythic || winhttp || smb || udp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "clients/tcp/tcp_exclude.go",
    "chars": 4319,
    "preview": "//go:build !tcp && (http || http1 || http2 || http3 || mythic || winhttp || smb || udp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "clients/udp/udp.go",
    "chars": 30414,
    "preview": "//go:build udp || !(http || http1 || http2 || http3 || mythic || winhttp || smb || tcp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "clients/udp/udp_exclude.go",
    "chars": 4319,
    "preview": "//go:build !udp && (http || http1 || http2 || http3 || mythic || winhttp || smb || tcp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "commands/clr.go",
    "chars": 1203,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/clr_windows.go",
    "chars": 7092,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/download.go",
    "chars": 2421,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/env.go",
    "chars": 2374,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/exec.go",
    "chars": 3516,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/exec_windows.go",
    "chars": 39240,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/execute.go",
    "chars": 1782,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/ifconfig.go",
    "chars": 1284,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/ifconfig_windows.go",
    "chars": 2587,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/link.go",
    "chars": 10589,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/listener.go",
    "chars": 16165,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/memfd.go",
    "chars": 1312,
    "preview": "//go:build !linux\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrig"
  },
  {
    "path": "commands/memfd_linux.go",
    "chars": 3706,
    "preview": "//go:build linux\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrigh"
  },
  {
    "path": "commands/memory.go",
    "chars": 1048,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/memory_windows.go",
    "chars": 3272,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/modules.go",
    "chars": 3568,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/native.go",
    "chars": 11912,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/netstat.go",
    "chars": 1162,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/netstat_windows.go",
    "chars": 20419,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/os.go",
    "chars": 1249,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/os_windows.go",
    "chars": 1485,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/pipes.go",
    "chars": 1089,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/pipes_windows.go",
    "chars": 2255,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/ps.go",
    "chars": 1077,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/ps_windows.go",
    "chars": 5622,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/runas.go",
    "chars": 1124,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/runas_windows.go",
    "chars": 2691,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/shell.go",
    "chars": 1096,
    "preview": "//go:build !linux && !windows && !darwin && !freebsd\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nT"
  },
  {
    "path": "commands/shell_darwin.go",
    "chars": 1293,
    "preview": "//go:build darwin\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrig"
  },
  {
    "path": "commands/shell_freebsd.go",
    "chars": 1281,
    "preview": "//go:build freebsd\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/shell_linux.go",
    "chars": 1292,
    "preview": "//go:build linux\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrigh"
  },
  {
    "path": "commands/shell_windows.go",
    "chars": 1307,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/shellcode.go",
    "chars": 2869,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/smb.go",
    "chars": 1473,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/smb_windows.go",
    "chars": 7557,
    "preview": "//go:build windows\n\n// This smb.go file is part of the \"link\" command and is not a standalone command\n\npackage commands\n"
  },
  {
    "path": "commands/ssh.go",
    "chars": 2842,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/tokens.go",
    "chars": 1208,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/tokens_windows.go",
    "chars": 10691,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "commands/unlink.go",
    "chars": 2308,
    "preview": "package commands\n\nimport (\n\t// Standard\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"time\"\n\n\t// 3rd Party\n\t\"github.com/google/uuid\"\n\n\t// "
  },
  {
    "path": "commands/upload.go",
    "chars": 2592,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "commands/uptime.go",
    "chars": 1083,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "commands/uptime_windows.go",
    "chars": 1570,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "core/core.go",
    "chars": 2400,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "docs/CHANGELOG.MD",
    "chars": 20588,
    "preview": "# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changel"
  },
  {
    "path": "docs/ISSUE_TEMPLATE.md",
    "chars": 629,
    "preview": "### Prerequisite\n\n* [ ] I have searched the opened & _closed_ [issues](https://github.com/Ne0nd0g/merlin-agent/issues)\n*"
  },
  {
    "path": "docs/PULL_REQUEST_TEMPLATE.md",
    "chars": 452,
    "preview": "\n### Pull Request (PR) Checklist\n- [ ] PR is from **a topic/feature/bugfix branch** off the **dev branch** (right side)\n"
  },
  {
    "path": "go.mod",
    "chars": 1712,
    "preview": "module github.com/Ne0nd0g/merlin-agent/v2\n\ngo 1.23.0\n\ntoolchain go1.24.2\n\nrequire (\n\tgithub.com/C-Sto/BananaPhone v0.0.0"
  },
  {
    "path": "go.sum",
    "chars": 14460,
    "preview": "github.com/Binject/debug v0.0.0-20200830173345-f54480b6530f/go.mod h1:QzgxDLY/qdKlvnbnb65eqTedhvQPbaSP2NqIbcuKvsQ=\ngithu"
  },
  {
    "path": "http/http.go",
    "chars": 4218,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "http/http1/http1.go",
    "chars": 2607,
    "preview": "//go:build http || http1 || mythic || !(http2 || http3 || winhttp || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitatio"
  },
  {
    "path": "http/http1/http1_exclude.go",
    "chars": 1192,
    "preview": "//go:build !http1 && !mythic && (http2 || http3 || winhttp || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitation comma"
  },
  {
    "path": "http/http2/http2.go",
    "chars": 2362,
    "preview": "//go:build http || http2 || !(http3 || mythic || winhttp || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitation command"
  },
  {
    "path": "http/http2/http2_exclude.go",
    "chars": 1393,
    "preview": "//go:build !http2 && (http3 || mythic || winhttp || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitation command and con"
  },
  {
    "path": "http/http3/http3.go",
    "chars": 2718,
    "preview": "//go:build http || http3 || !(http2 || mythic || winhttp || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitation command"
  },
  {
    "path": "http/http3/http3_exclude.go",
    "chars": 1278,
    "preview": "//go:build !http3 && (http2 || mythic || winhttp || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitation command and con"
  },
  {
    "path": "http/proxy/proxy.go",
    "chars": 2516,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "http/utls/utls.go",
    "chars": 18758,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "http/winhttp/winhttp_exclude.go",
    "chars": 1531,
    "preview": "//go:build !winhttp && (http2 || http3 || mythic || smb || tcp || udp || !windows)\n\n/*\nMerlin is a post-exploitation com"
  },
  {
    "path": "http/winhttp/winhttp_windows.go",
    "chars": 3158,
    "preview": "//go:build http || winhttp || !(http2 || http3 || mythic || smb || tcp || udp)\n\n/*\nMerlin is a post-exploitation command"
  },
  {
    "path": "main.go",
    "chars": 11425,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "os/os.go",
    "chars": 1775,
    "preview": "//go:build !windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyr"
  },
  {
    "path": "os/os_windows.go",
    "chars": 1888,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/README.MD",
    "chars": 364,
    "preview": "# Windows\n\nThis directory is used to store functions exclusively used with the Windows agent.\nIt consists of two high-le"
  },
  {
    "path": "os/windows/api/advapi32/advapi32.go",
    "chars": 8774,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/api/kernel32/kernel32.go",
    "chars": 3997,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/api/ntdll/ntdll.go",
    "chars": 2681,
    "preview": "//go:build windows\n// +build windows\n\n// Merlin is a post-exploitation command and control framework.\n// This file is pa"
  },
  {
    "path": "os/windows/api/user32/user32.go",
    "chars": 2005,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/pkg/evasion/evasion.go",
    "chars": 6914,
    "preview": "//go:build windows && amd64\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merli"
  },
  {
    "path": "os/windows/pkg/evasion/evasion_386.go",
    "chars": 2382,
    "preview": "//go:build windows && !amd64\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merl"
  },
  {
    "path": "os/windows/pkg/pipes/pipes.go",
    "chars": 6074,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/pkg/processes/processes.go",
    "chars": 5415,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/pkg/text/text.go",
    "chars": 2907,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "os/windows/pkg/tokens/tokens.go",
    "chars": 29128,
    "preview": "//go:build windows\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyri"
  },
  {
    "path": "p2p/memory/memory.go",
    "chars": 2597,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "p2p/p2p.go",
    "chars": 4854,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "p2p/repository.go",
    "chars": 1393,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "qodana.yaml",
    "chars": 128,
    "preview": "version: \"1.0\"\nlinter: jetbrains/qodana-go:2023.3\nexclude:\n  - name: All\n    paths:\n      - .github\n      - .qodana\n    "
  },
  {
    "path": "run/run.go",
    "chars": 9138,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "services/agent/agent.go",
    "chars": 4960,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "services/client/client.go",
    "chars": 4301,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "services/job/job.go",
    "chars": 13287,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "services/message/message.go",
    "chars": 6244,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "services/p2p/p2p.go",
    "chars": 11762,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "services/services.go",
    "chars": 830,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "socks/socks.go",
    "chars": 7812,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encoders/base64/base64.go",
    "chars": 2228,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encoders/gob/gob.go",
    "chars": 3673,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encoders/hex/hex.go",
    "chars": 2429,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encoders/mythic/mythic.go",
    "chars": 2732,
    "preview": "//go:build mythic\n\n/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyrig"
  },
  {
    "path": "transformers/encrypters/aes/aes.go",
    "chars": 4731,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encrypters/jwe/jwe.go",
    "chars": 4525,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encrypters/rc4/rc4.go",
    "chars": 2191,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/encrypters/xor/xor.go",
    "chars": 1887,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  },
  {
    "path": "transformers/transformer.go",
    "chars": 1092,
    "preview": "/*\nMerlin is a post-exploitation command and control framework.\n\nThis file is part of Merlin.\nCopyright (C) 2024 Russel "
  }
]

About this extraction

This page contains the full source code of the Ne0nd0g/merlin-agent GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 127 files (1.5 MB), approximately 354.0k tokens, and a symbol index with 699 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!