diff --git a/.commitlintrc.json b/.commitlintrc.json
new file mode 100644
index 000000000..c30e5a970
--- /dev/null
+++ b/.commitlintrc.json
@@ -0,0 +1,3 @@
+{
+  "extends": ["@commitlint/config-conventional"]
+}
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index beffa3084..000000000
--- a/.editorconfig
+++ /dev/null
@@ -1,11 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
diff --git a/.eslintignore b/.eslintignore
index 27d902422..f2009be41 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,3 +2,4 @@
 /lib
 /templates
 /tmp
+/test/fixtures
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index e1fd4386d..000000000
--- a/.eslintrc
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "extends": [
-    "oclif",
-    "oclif-typescript"
-  ],
-  "rules": {
-    "@typescript-eslint/no-empty-function": "off",
-    "node/no-extraneous-import": "off",
-    "unicorn/prefer-module": "off",
-    "unicorn/prefer-ternary": "off",
-    "unicorn/prefer-array-some": "off",
-    "unicorn/consistent-function-scoping": "off",
-    "unicorn/consistent-destructuring": "off",
-    "unicorn/prefer-node-protocol": "off",
-    "unicorn/prefer-spread": "off",
-    "unicorn/import-style": "off"
-  }
-}
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 000000000..2c67f6b1c
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,13 @@
+{
+  "extends": ["oclif", "oclif-typescript", "prettier"],
+  "rules": {
+    "no-useless-constructor": "off",
+    "prefer-destructuring": "off",
+    "unicorn/consistent-destructuring": "off",
+    "unicorn/import-style": "error",
+    "unicorn/no-array-reduce": "off",
+    "unicorn/prefer-module": "off",
+    "unicorn/no-empty-file": "off",
+    "valid-jsdoc": "off"
+  }
+}
diff --git a/.git2gus/config.json b/.git2gus/config.json
index 62c66207b..f8c116367 100644
--- a/.git2gus/config.json
+++ b/.git2gus/config.json
@@ -1,7 +1,7 @@
 {
   "productTag": "a1aB0000000ce2IIAQ",
-  "defaultBuild": "offcore.tooling.55",
-  "issueTypeLabels": { "enhancement": "USER STORY", "bug": "BUG P3" },
+  "defaultBuild": "offcore.tooling.59",
+  "issueTypeLabels": {"enhancement": "USER STORY", "bug": "BUG P3"},
   "hideWorkItemUrl": true,
   "statusWhenClosed": "CLOSED"
 }
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 9f17ba0e4..3d634936f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1 +1 @@
-* @heroku/cli
+* @oclif/admins
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
deleted file mode 100644
index d4573a9e6..000000000
--- a/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,9 +0,0 @@
-This project uses [conventional changelog](https://conventionalcommits.org) and commits will need to fit the correct format for CI to pass and the change to be entered into the [CHANGELOG](./CHANGELOG.md) correctly.
-
-## Test
-
-The `test/integration` requires Github Actions to run on the various OS under test.
-
-These tests requires keys for uploading and promoting artifacts to S3 (and testing optional functions like signing).
-
-In GHA, set `PRESERVE_ARTIFCATS` to `true` to prevent the tests from deleting the artifacts.  This is useful if you want to retrieve them from their buckets to manually test on different systems.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index a612516d6..000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Do you want to request a *feature* or report a *bug*?
------------------------------------------------------
-
-What is the current behavior?
------------------------------
-If the current behavior is a bug, please provide the steps to reproduce.
-
-What is the expected behavior?
-------------------------------
-Please mention your oclif and OS version.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..3008a1e4c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,34 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+---
+
+**Is this a bug with the oclif CLI? Or the oclif framework?**
+
+If it's an issue with the oclif framework please make the issue over at [@ocilf/core](https://github.com/oclif/core/)
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Your Environment (please complete the following information):**
+
+- `oclif` Version [e.g. 4.5.0]
+- OS & version: [e.g. MacOS Monterey, Ubuntu 20.04.4 LTS, Windows 10]
+- Shell/terminal & version [e.g. bash-3.2, bash-5.0, zsh 5.8, powershell 7.2.4, cmd.exe, Windows Terminal w/ powershell, etc... ]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 000000000..bbcbbe7d6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml
index 796eafae2..e8c1e8498 100644
--- a/.github/workflows/automerge.yml
+++ b/.github/workflows/automerge.yml
@@ -6,5 +6,6 @@ on:
 
 jobs:
   automerge:
-    uses: oclif/github-workflows/.github/workflows/automerge.yml@main
-    secrets: inherit
+    uses: salesforcecli/github-workflows/.github/workflows/automerge.yml@main
+    secrets:
+      SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }}
diff --git a/.github/workflows/create-github-release.yml b/.github/workflows/create-github-release.yml
new file mode 100644
index 000000000..12c9e3804
--- /dev/null
+++ b/.github/workflows/create-github-release.yml
@@ -0,0 +1,27 @@
+name: create-github-release
+
+on:
+  push:
+    branches:
+      - main
+      - prerelease/**
+    tags-ignore:
+      - '*'
+  workflow_dispatch:
+    inputs:
+      prerelease:
+        type: string
+        description: 'Name to use for the prerelease: beta, dev, etc. NOTE: If this is already set in the package.json, it does not need to be passed in here.'
+
+jobs:
+  release:
+    uses: salesforcecli/github-workflows/.github/workflows/create-github-release.yml@main
+    secrets:
+      SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }}
+    with:
+      prerelease: ${{ inputs.prerelease }}
+      # If this is a push event, we want to skip the release if there are no semantic commits
+      # However, if this is a manual release (workflow_dispatch), then we want to disable skip-on-empty
+      # This helps recover from forgetting to add semantic commits ('fix:', 'feat:', etc.)
+      skip-on-empty: ${{ github.event_name == 'push' }}
+      readme-multi: true
diff --git a/.github/workflows/failureNotifications.yml b/.github/workflows/failureNotifications.yml
index 6b4118fcd..7c5b166c5 100644
--- a/.github/workflows/failureNotifications.yml
+++ b/.github/workflows/failureNotifications.yml
@@ -1,13 +1,10 @@
 name: failureNotifications
-
 on:
   workflow_run:
     workflows:
-      - version, tag and github release
       - publish
     types:
       - completed
-
 jobs:
   failure-notify:
     runs-on: ubuntu-latest
@@ -15,7 +12,7 @@ jobs:
     steps:
       - name: Announce Failure
         id: slack
-        uses: slackapi/slack-github-action@v1.21.0
+        uses: slackapi/slack-github-action@v1.26.0
         env:
           # for non-CLI-team-owned plugins, you can send this anywhere you like
           SLACK_WEBHOOK_URL: ${{ secrets.CLI_ALERTS_SLACK_WEBHOOK }}
diff --git a/.github/workflows/manualRelease.yml b/.github/workflows/manualRelease.yml
deleted file mode 100644
index 8ceb52c3c..000000000
--- a/.github/workflows/manualRelease.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-name: manual release
-
-on:
-  workflow_dispatch:
-
-jobs:
-  release:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v3
-        with:
-          token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }}
-      - name: Conventional Changelog Action
-        id: changelog
-        uses: TriPSs/conventional-changelog-action@d360fad3a42feca6462f72c97c165d60a02d4bf2
-        # overriding some of the basic behaviors to just get the changelog
-        with:
-          git-user-name: svc-cli-bot
-          git-user-email: svc_cli_bot@salesforce.com
-          github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }}
-          output-file: false
-          # always do the release, even if there are no semantic commits
-          skip-on-empty: false
-          tag-prefix: ''
-      - uses: notiz-dev/github-action-json-property@2192e246737701f108a4571462b76c75e7376216
-        id: packageVersion
-        with:
-          path: 'package.json'
-          prop_path: 'version'
-      - name: Create Github Release
-        uses: actions/create-release@v1
-        env:
-          GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }}
-        with:
-          tag_name: ${{ steps.packageVersion.outputs.prop }}
-          release_name: ${{ steps.packageVersion.outputs.prop }}
diff --git a/.github/workflows/onPushToMain.yml b/.github/workflows/onPushToMain.yml
deleted file mode 100644
index 61eda8adc..000000000
--- a/.github/workflows/onPushToMain.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# test
-name: version, tag and github release
-
-on:
-  push:
-    branches: [main]
-
-jobs:
-  release:
-    uses: oclif/github-workflows/.github/workflows/githubRelease.yml@main
-    secrets: inherit
-
-  # most repos won't use this
-  # depends on previous job to avoid git collisions, not for any functionality reason
-  # docs:
-  #   uses: salesforcecli/github-workflows/.github/workflows/publishTypedoc.yml@main
-  #   secrets: inherit
-  #   needs: release
diff --git a/.github/workflows/onRelease.yml b/.github/workflows/onRelease.yml
index 8876db481..4325a7f80 100644
--- a/.github/workflows/onRelease.yml
+++ b/.github/workflows/onRelease.yml
@@ -1,19 +1,31 @@
 name: publish
-
 on:
   release:
-    types: [released]
+    # both release and prereleases
+    types: [published]
   # support manual release in case something goes wrong and needs to be repeated or tested
   workflow_dispatch:
     inputs:
       tag:
-        description: tag that needs to publish
+        description: github tag that needs to publish
         type: string
         required: true
 jobs:
+  getDistTag:
+    outputs:
+      tag: ${{ steps.distTag.outputs.tag }}
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          ref: ${{ github.event.release.tag_name || inputs.tag  }}
+      - uses: salesforcecli/github-workflows/.github/actions/getPreReleaseTag@main
+        id: distTag
   npm:
-    uses: oclif/github-workflows/.github/workflows/npmPublish.yml@main
+    uses: salesforcecli/github-workflows/.github/workflows/npmPublish.yml@main
+    needs: [getDistTag]
     with:
-      tag: latest
+      tag: ${{ needs.getDistTag.outputs.tag || 'latest' }}
       githubTag: ${{ github.event.release.tag_name || inputs.tag }}
-    secrets: inherit
+    secrets:
+      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 000000000..cc2a40936
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,18 @@
+name: 'Close stale issues'
+on:
+  schedule:
+    - cron: '30 1 * * *'
+  workflow_dispatch:
+
+jobs:
+  stale:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/stale@v9
+        with:
+          stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
+          days-before-stale: 30
+          days-before-close: 7
+          exempt-issue-labels: 'bug,enhancement,announcement,help wanted,good first issue,waiting for interest,needs respsonse,next major'
+          # Disable marking PRs as stale
+          days-before-pr-stale: -1
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index e49ce8bb9..d602e3c58 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -5,110 +5,195 @@ on:
   workflow_dispatch:
 
 jobs:
-  unit-tests:
+  yarn-lockfile-check:
+    uses: salesforcecli/github-workflows/.github/workflows/lockFileCheck.yml@main
+  linux-unit-tests:
+    needs: yarn-lockfile-check
+    uses: salesforcecli/github-workflows/.github/workflows/unitTestsLinux.yml@main
+  windows-unit-tests:
+    needs: linux-unit-tests
+    uses: salesforcecli/github-workflows/.github/workflows/unitTestsWindows.yml@main
+
+  publish:
+    needs: [linux-unit-tests]
     strategy:
       matrix:
-        node_version: [lts/-1, lts/*, latest]
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
       fail-fast: false
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-node@v3
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node_version }}
           cache: yarn
-      - run: yarn install --network-timeout 600000
-      - run: yarn nps lint
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
       - run: yarn build
-      - run: yarn test:unit
-  publish:
-    needs: [unit-tests]
+      - run: yarn test:integration:publish
+        env:
+          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+          PRESERVE_ARTIFACTS: ${{ vars.PRESERVE_ARTIFACTS }}
+
+  sf-integration:
+    needs: [linux-unit-tests]
     strategy:
       matrix:
-        node_version: [lts/-1, lts/*, latest]
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
+        os: [ubuntu-latest, windows-latest]
       fail-fast: false
-    runs-on: ubuntu-latest
+    runs-on: ${{ matrix.os }}
     steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-node@v3
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node_version }}
           cache: yarn
-      - run: yarn install --network-timeout 600000
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
       - run: yarn build
-      - run: yarn mocha test/integration/publish.test.ts
+      - run: yarn test:integration:sf --retries 3
+
+  cli-integration:
+    needs: [linux-unit-tests]
+    strategy:
+      matrix:
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
+        package_manager: [yarn, npm, pnpm]
+        module_type: [CommonJS, ESM]
+        os: [ubuntu-latest, windows-latest]
+        exclude:
+          - node_version: lts/*
+            os: windows-latest
+          - package_manager: npm
+            os: windows-latest
+      fail-fast: false
+    runs-on: ${{ matrix.os }}
+    steps:
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
+        with:
+          node-version: ${{ matrix.node_version }}
+          cache: yarn
+      # oclif pack tarballs needs a git commit to work, so the tests need to be able to run `git commit` with the correct user info
+      - uses: salesforcecli/github-workflows/.github/actions/getGithubUserInfo@main
+        id: github-user-info
+        with:
+          SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }}
+      - uses: salesforcecli/github-workflows/.github/actions/gitConfig@main
+        with:
+          username: ${{ steps.github-user-info.outputs.username }}
+          email: ${{ steps.github-user-info.outputs.email }}
+      - if: matrix.package_manager == 'pnpm'
+        run: 'npm install -g pnpm'
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
+      - run: yarn build
+      - run: yarn test:integration:cli
         env:
-          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
-          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
-          PRESERVE_ARTIFACTS:  ${{ vars.PRESERVE_ARTIFACTS }}
+          OCLIF_INTEGRATION_MODULE_TYPE: ${{ matrix.module_type }}
+          OCLIF_INTEGRATION_PACKAGE_MANAGER: ${{ matrix.package_manager }}
+
+  init-integration:
+    needs: [linux-unit-tests]
+    strategy:
+      matrix:
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
+        package_manager: [yarn, npm, pnpm]
+        module_type: [CommonJS, ESM]
+        os: [ubuntu-latest, windows-latest]
+        exclude:
+          - node_version: lts/*
+            os: windows-latest
+      fail-fast: false
+    runs-on: ${{ matrix.os }}
+    steps:
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
+        with:
+          node-version: ${{ matrix.node_version }}
+          cache: yarn
+      - if: matrix.package_manager == 'pnpm'
+        run: 'npm install -g pnpm'
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
+      - run: yarn build
+      - run: yarn test:integration:init
+        env:
+          OCLIF_INTEGRATION_MODULE_TYPE: ${{ matrix.module_type }}
+          OCLIF_INTEGRATION_PACKAGE_MANAGER: ${{ matrix.package_manager }}
 
   win-build:
-    needs: [unit-tests]
+    needs: [linux-unit-tests]
     strategy:
       matrix:
-        node_version: [lts/-1, lts/*, latest]
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
       fail-fast: false
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-node@v3
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node_version }}
           cache: yarn
-      - run: yarn install --network-timeout 600000
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
       - run: yarn build
       - run: |
           sudo apt-get update
           sudo apt-get install osslsigncode nsis
-      - run: yarn mocha test/integration/win.test.ts
+      - run: yarn test:integration:win
         env:
           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
-          PRESERVE_ARTIFACTS:  ${{ vars.PRESERVE_ARTIFACTS }}
+          PRESERVE_ARTIFACTS: ${{ vars.PRESERVE_ARTIFACTS }}
+
   mac-build:
-    needs: [unit-tests]
+    needs: [linux-unit-tests]
     strategy:
       matrix:
-        node_version: [lts/-1, lts/*, latest]
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
       fail-fast: false
     runs-on: macos-latest
     steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-node@v3
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node_version }}
           cache: yarn
-      - run: yarn install --network-timeout 600000
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
       - run: yarn build
-      - run: yarn mocha test/integration/macos.test.ts
+      - run: yarn test:integration:macos
         env:
           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
-          PRESERVE_ARTIFACTS:  ${{ vars.PRESERVE_ARTIFACTS }}
+          PRESERVE_ARTIFACTS: ${{ vars.PRESERVE_ARTIFACTS }}
 
   deb-build:
-    needs: [unit-tests]
+    needs: [linux-unit-tests]
     env:
       OCLIF_DEB_PRIVATE_KEY: ${{ secrets.OCLIF_DEB_PRIVATE_KEY }}
     strategy:
       matrix:
-        node_version: [lts/-1, lts/*, latest]
+        # node_version: [lts/*, latest]
+        node_version: [22, 20]
       fail-fast: false
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-node@v3
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node_version }}
           cache: yarn
-      - run: yarn install --network-timeout 600000
+      - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main
       - run: yarn build
       - run: echo -n "$OCLIF_DEB_PRIVATE_KEY" | gpg --import
 
-      - run: yarn mocha test/integration/deb.test.ts
+      - run: yarn test:integration:deb
         env:
           AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
           AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
           OCLIF_DEB_KEY: ${{ secrets.OCLIF_DEB_KEY }}
-          PRESERVE_ARTIFACTS:  ${{ vars.PRESERVE_ARTIFACTS }}
-
+          PRESERVE_ARTIFACTS: ${{ vars.PRESERVE_ARTIFACTS }}
diff --git a/.gitignore b/.gitignore
index d42fefaab..0da98bfef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
 package-lock.json
 **/.DS_Store
 /.idea
+oclif.manifest.json
diff --git a/.husky/.gitignore b/.husky/.gitignore
new file mode 100644
index 000000000..31354ec13
--- /dev/null
+++ b/.husky/.gitignore
@@ -0,0 +1 @@
+_
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100755
index 000000000..8d0ff0711
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1 @@
+yarn run commitlint --edit $1
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100755
index 000000000..b6d52f90e
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1 @@
+yarn lint-staged --concurrent false
diff --git a/.lintstagedrc.json b/.lintstagedrc.json
new file mode 100644
index 000000000..c31470780
--- /dev/null
+++ b/.lintstagedrc.json
@@ -0,0 +1,5 @@
+{
+  "*.json": ["prettier --write"],
+  "*.md": ["prettier --write"],
+  "+(src|test)/**/*.+(ts|js)": ["eslint --fix", "prettier --write"]
+}
diff --git a/.mocharc.json b/.mocharc.json
index 0c8c4944b..aaadaff16 100644
--- a/.mocharc.json
+++ b/.mocharc.json
@@ -1,13 +1,8 @@
 {
-  "require": [
-    "test/helpers/init.js",
-    "ts-node/register",
-    "source-map-support/register"
-  ],
-  "watch-extensions": [
-    "ts"
-  ],
   "recursive": true,
   "reporter": "spec",
-  "timeout": 0
+  "require": ["test/helpers/init.js", "ts-node/register"],
+  "timeout": 60000,
+  "watch-extensions": ["ts"],
+  "watch-files": ["src", "test"]
 }
diff --git a/.nycrc.json b/.nycrc.json
new file mode 100644
index 000000000..8749d3b4e
--- /dev/null
+++ b/.nycrc.json
@@ -0,0 +1,11 @@
+{
+  "check-coverage": true,
+  "lines": 35,
+  "statements": 35,
+  "functions": 20,
+  "branches": 15,
+  "reporter": ["lcov", "text"],
+  "extension": [".ts"],
+  "include": ["**/*.ts"],
+  "exclude": ["**/*.d.ts", "test/**"]
+}
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 000000000..631433570
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1 @@
+"@oclif/prettier-config"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d0e3428cf..ad729aca0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3574 +1,3741 @@
-## [3.8.1](https://github.com/oclif/oclif/compare/3.8.0...3.8.1) (2023-04-14)
-
+## [4.17.3](https://github.com/oclif/oclif/compare/4.17.2...4.17.3) (2024-12-22)
 
 ### Bug Fixes
 
-* **promote:deb:** skip i386 deb pkg if node < 10 ([#1140](https://github.com/oclif/oclif/issues/1140)) ([dd50d78](https://github.com/oclif/oclif/commit/dd50d78ed486e37209789a201e60b35679a7ffdf))
+- **deps:** bump @oclif/plugin-not-found from 3.2.30 to 3.2.31 ([13ce256](https://github.com/oclif/oclif/commit/13ce2562dd6d3f3cbb8c755609482b5e32b81570))
 
+## [4.17.2](https://github.com/oclif/oclif/compare/4.17.1...4.17.2) (2024-12-22)
 
+### Bug Fixes
 
-# [3.8.0](https://github.com/oclif/oclif/compare/3.7.3...3.8.0) (2023-04-12)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([63d4033](https://github.com/oclif/oclif/commit/63d4033a2b69a74732889ce3446338f0143bd1d4))
 
+## [4.17.1](https://github.com/oclif/oclif/compare/4.17.0...4.17.1) (2024-12-22)
 
-### Features
+### Bug Fixes
 
-* binAliases (support for multiple bin for the same CLI) for all OS ([a9ee96e](https://github.com/oclif/oclif/commit/a9ee96e7cd954a1a33db595e8be22e91070e8a93))
+- **deps:** bump @oclif/core from 4.0.37 to 4.2.0 ([114d1de](https://github.com/oclif/oclif/commit/114d1def1781270a1c302f188532bb4f1b8c8a03))
 
+# [4.17.0](https://github.com/oclif/oclif/compare/4.16.5...4.17.0) (2024-12-17)
 
+### Features
 
-## [3.7.3](https://github.com/oclif/oclif/compare/3.7.2...3.7.3) (2023-03-28)
+- allow pack:tarball on windows ([#1638](https://github.com/oclif/oclif/issues/1638)) ([2d11d98](https://github.com/oclif/oclif/commit/2d11d98e7108776009fd7279f447d067539b24c2))
 
+## [4.16.5](https://github.com/oclif/oclif/compare/4.16.4...4.16.5) (2024-12-16)
 
 ### Bug Fixes
 
-* reapply is manifest writing ([#1130](https://github.com/oclif/oclif/issues/1130)) ([d0365e5](https://github.com/oclif/oclif/commit/d0365e51aadb565951aabc17562633ad1eb0fcbd)), closes [#1127](https://github.com/oclif/oclif/issues/1127)
-
-
-
-## [3.7.2](https://github.com/oclif/oclif/compare/3.7.1...3.7.2) (2023-03-22)
+- **deps:** bump @aws-sdk/client-s3 from 3.705.0 to 3.712.0 ([b731838](https://github.com/oclif/oclif/commit/b73183893e0016b7d7fd603297cd8a6f560dd90c))
 
+## [4.16.4](https://github.com/oclif/oclif/compare/4.16.3...4.16.4) (2024-12-15)
 
 ### Bug Fixes
 
-* bump oclif core ([#1127](https://github.com/oclif/oclif/issues/1127)) ([03cbaab](https://github.com/oclif/oclif/commit/03cbaab6a4c39084581ef3f718249969ced6465f))
+- **deps:** bump @oclif/core from 4.0.36 to 4.0.37 ([2ee5a12](https://github.com/oclif/oclif/commit/2ee5a12da1d9aa3d1092d29e718fa9c7d73484d5))
 
+## [4.16.3](https://github.com/oclif/oclif/compare/4.16.2...4.16.3) (2024-12-15)
 
+### Bug Fixes
 
-## [3.7.1](https://github.com/oclif/oclif/compare/3.7.0...3.7.1) (2023-03-22)
+- **deps:** bump @oclif/plugin-not-found from 3.2.25 to 3.2.30 ([2e0ad46](https://github.com/oclif/oclif/commit/2e0ad46ebaed6bb9a98e803d156bd020865fbbd5))
 
+## [4.16.2](https://github.com/oclif/oclif/compare/4.16.1...4.16.2) (2024-12-09)
 
 ### Bug Fixes
 
-* pass isWritingManifest true to plugin.load ([#1126](https://github.com/oclif/oclif/issues/1126)) ([c6a124a](https://github.com/oclif/oclif/commit/c6a124a032da4672b397dc5eeaa01ee13aea4104))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.687.0 to 3.699.0 ([#1626](https://github.com/oclif/oclif/issues/1626)) ([1c0ba70](https://github.com/oclif/oclif/commit/1c0ba702074b8783749f7cb18baa65427ebb6532))
+- **deps:** bump @oclif/core from 4.0.32 to 4.0.36 ([#1631](https://github.com/oclif/oclif/issues/1631)) ([fe0a271](https://github.com/oclif/oclif/commit/fe0a271a8ffd6202ab1b61de4c4a5bacbfbaca83))
+- **deps:** bump debug from 4.3.7 to 4.4.0 ([#1627](https://github.com/oclif/oclif/issues/1627)) ([2e5c3bb](https://github.com/oclif/oclif/commit/2e5c3bbfbb7c6dbf95724113bd6498e35d354262))
 
+## [4.16.1](https://github.com/oclif/oclif/compare/4.16.0...4.16.1) (2024-12-09)
 
+### Bug Fixes
 
-# [3.7.0](https://github.com/oclif/oclif/compare/3.6.5...3.7.0) (2023-02-22)
+- **deps:** bump @aws-sdk/client-s3 from 3.701.0 to 3.705.0 ([#1625](https://github.com/oclif/oclif/issues/1625)) ([6131622](https://github.com/oclif/oclif/commit/6131622f3cb4a800966996de13f30368066dad6a))
 
+# [4.16.0](https://github.com/oclif/oclif/compare/4.15.30...4.16.0) (2024-12-02)
 
 ### Features
 
-* create symlinks from binAliases to bin for pack:macos ([#1109](https://github.com/oclif/oclif/issues/1109)) ([70f0b27](https://github.com/oclif/oclif/commit/70f0b27894f6914ed813a044d5b364af1c9295c9))
+- allow custom tsconfig ([#1618](https://github.com/oclif/oclif/issues/1618)) ([9e4ec58](https://github.com/oclif/oclif/commit/9e4ec5805cccb974f013741a7d0c585270c30202))
 
+## [4.15.30](https://github.com/oclif/oclif/compare/4.15.29...4.15.30) (2024-12-01)
 
+### Bug Fixes
 
-## [3.6.5](https://github.com/oclif/oclif/compare/3.6.4...3.6.5) (2023-02-15)
+- **deps:** bump @aws-sdk/client-s3 from 3.699.0 to 3.701.0 ([7a7d924](https://github.com/oclif/oclif/commit/7a7d9247947bccbb23865c74278e5756d0528e88))
 
+## [4.15.29](https://github.com/oclif/oclif/compare/4.15.28...4.15.29) (2024-11-24)
 
 ### Bug Fixes
 
-* explicitly ask for latest from npm ([#1107](https://github.com/oclif/oclif/issues/1107)) ([7991005](https://github.com/oclif/oclif/commit/7991005402143079cde1ab36c91074a82f757a34))
+- **deps:** bump @aws-sdk/client-s3 from 3.693.0 to 3.699.0 ([f94cff1](https://github.com/oclif/oclif/commit/f94cff1ff1b6e47e77e6ac5be8ee05854f036c6b))
 
+## [4.15.28](https://github.com/oclif/oclif/compare/4.15.27...4.15.28) (2024-11-18)
 
+### Bug Fixes
 
-## [3.6.4](https://github.com/oclif/oclif/compare/3.6.3...3.6.4) (2023-02-14)
+- **deps:** bump @oclif/core from 4.0.31 to 4.0.32 ([146d8eb](https://github.com/oclif/oclif/commit/146d8ebc72037f8bdd2d22e978e1cb8bbe60bd88))
 
+## [4.15.27](https://github.com/oclif/oclif/compare/4.15.26...4.15.27) (2024-11-18)
 
 ### Bug Fixes
 
-* check if oclif section exists ([#1105](https://github.com/oclif/oclif/issues/1105)) ([d296847](https://github.com/oclif/oclif/commit/d296847bd061bd4845370eebca51b202f8220848))
+- **deps:** bump @oclif/plugin-help from 6.2.16 to 6.2.17 ([7e9be68](https://github.com/oclif/oclif/commit/7e9be68b5bb992604b73cbf5fe21dbe5c7e7262f))
 
+## [4.15.26](https://github.com/oclif/oclif/compare/4.15.25...4.15.26) (2024-11-17)
 
+### Bug Fixes
 
-## [3.6.3](https://github.com/oclif/oclif/compare/3.6.2...3.6.3) (2023-02-06)
+- **deps:** bump cross-spawn from 7.0.3 to 7.0.5 ([06e424b](https://github.com/oclif/oclif/commit/06e424ba4d8e30511fa6993b109e6f8d29b88b4e))
 
+## [4.15.25](https://github.com/oclif/oclif/compare/4.15.24...4.15.25) (2024-11-17)
 
 ### Bug Fixes
 
-* command template ([#1101](https://github.com/oclif/oclif/issues/1101)) ([80670ef](https://github.com/oclif/oclif/commit/80670ef315e59b8d8b07e062b494796cb8c22538))
+- **deps:** bump @aws-sdk/client-s3 from 3.688.0 to 3.693.0 ([6d562f0](https://github.com/oclif/oclif/commit/6d562f04a4bb55f42cad6b67cc2a6f373dfa30af))
 
+## [4.15.24](https://github.com/oclif/oclif/compare/4.15.23...4.15.24) (2024-11-11)
 
+### Bug Fixes
 
-## [3.6.2](https://github.com/oclif/oclif/compare/3.6.1...3.6.2) (2023-02-01)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([78d2713](https://github.com/oclif/oclif/commit/78d271370ba16e24389aeb7bf5f840cb374da75d))
 
+## [4.15.23](https://github.com/oclif/oclif/compare/4.15.22...4.15.23) (2024-11-10)
 
 ### Bug Fixes
 
-* workaround wireit ([#1092](https://github.com/oclif/oclif/issues/1092)) ([44d9f69](https://github.com/oclif/oclif/commit/44d9f6978ce96e3d40ceba7b3215c36197b63519))
+- **deps:** bump @oclif/plugin-not-found from 3.2.24 to 3.2.25 ([0009239](https://github.com/oclif/oclif/commit/000923902a4c808ab672d2c0109cb2a101d09e2e))
 
+## [4.15.22](https://github.com/oclif/oclif/compare/4.15.21...4.15.22) (2024-11-10)
 
+### Bug Fixes
 
-## [3.6.1](https://github.com/oclif/oclif/compare/3.6.0...3.6.1) (2023-01-23)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.682.0 to 3.687.0 ([032f61c](https://github.com/oclif/oclif/commit/032f61c4fafbe1c0be59e4864d38f432a230c1ca))
 
+## [4.15.21](https://github.com/oclif/oclif/compare/4.15.20...4.15.21) (2024-11-10)
 
 ### Bug Fixes
 
-* bump core ([b56ba9e](https://github.com/oclif/oclif/commit/b56ba9e16293b4224bc264d7d144941f694b94a1))
+- **deps:** bump @aws-sdk/client-s3 from 3.685.0 to 3.688.0 ([a446ebc](https://github.com/oclif/oclif/commit/a446ebc07f7d5736371be50ef817a951f25b1fa3))
 
+## [4.15.20](https://github.com/oclif/oclif/compare/4.15.19...4.15.20) (2024-11-04)
 
+### Bug Fixes
 
-# [3.6.0](https://github.com/oclif/oclif/compare/3.5.0...3.6.0) (2023-01-19)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.679.0 to 3.682.0 ([6a359b5](https://github.com/oclif/oclif/commit/6a359b50402808e75c1c152e5d154adff264fc3c))
 
+## [4.15.19](https://github.com/oclif/oclif/compare/4.15.18...4.15.19) (2024-11-03)
 
-### Features
+### Bug Fixes
 
-* support JIT plugins ([#1009](https://github.com/oclif/oclif/issues/1009)) ([b713b9d](https://github.com/oclif/oclif/commit/b713b9dc52f34f5b1c92d8d19c541d2ad785c872))
+- **deps:** bump @oclif/core from 4.0.30 to 4.0.31 ([53e1f93](https://github.com/oclif/oclif/commit/53e1f938d038e5a49e71e56796577dbc3ef6776b))
 
+## [4.15.18](https://github.com/oclif/oclif/compare/4.15.17...4.15.18) (2024-11-03)
 
+### Bug Fixes
 
-# [3.5.0](https://github.com/oclif/oclif/compare/3.4.6...3.5.0) (2023-01-18)
+- **deps:** bump @aws-sdk/client-s3 from 3.676.0 to 3.685.0 ([7aca771](https://github.com/oclif/oclif/commit/7aca7710b2a0c8fc511920deea38597ce6cc04af))
 
+## [4.15.17](https://github.com/oclif/oclif/compare/4.15.16...4.15.17) (2024-11-03)
 
-### Features
+### Bug Fixes
 
-* use oclif/core v2 ([#1081](https://github.com/oclif/oclif/issues/1081)) ([d8352ff](https://github.com/oclif/oclif/commit/d8352ffe6bfcdfca7c0021ef53b8a8e38477cae7))
+- **deps:** bump @oclif/plugin-not-found from 3.2.22 to 3.2.24 ([5e86b6a](https://github.com/oclif/oclif/commit/5e86b6abea3c4120056b7e80fa38f3d77e69110e))
 
+## [4.15.16](https://github.com/oclif/oclif/compare/4.15.15...4.15.16) (2024-10-28)
 
+### Bug Fixes
 
-## [3.4.6](https://github.com/oclif/oclif/compare/3.4.5...3.4.6) (2023-01-18)
+- **deps:** bump @oclif/plugin-help from 6.2.14 to 6.2.16 ([b87b645](https://github.com/oclif/oclif/commit/b87b645119bc169993a588e1f4182a0a3a70dc7c))
 
+## [4.15.15](https://github.com/oclif/oclif/compare/4.15.14...4.15.15) (2024-10-27)
 
 ### Bug Fixes
 
-* forwards compatibility ([dac9e15](https://github.com/oclif/oclif/commit/dac9e150f3a7bc7e473fd6e0cb82940691d1be63))
+- **deps:** bump @oclif/plugin-warn-if-update-available ([f15c99a](https://github.com/oclif/oclif/commit/f15c99a5c808a3129dd6111f049460800d593207))
 
+## [4.15.14](https://github.com/oclif/oclif/compare/4.15.13...4.15.14) (2024-10-27)
 
+### Bug Fixes
 
-## [3.4.5](https://github.com/oclif/oclif/compare/3.4.4...3.4.5) (2023-01-18)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.675.0 to 3.679.0 ([bf66ea1](https://github.com/oclif/oclif/commit/bf66ea1771a6f7d1e7539a0cb1be1a5a37df8940))
 
+## [4.15.13](https://github.com/oclif/oclif/compare/4.15.12...4.15.13) (2024-10-27)
 
 ### Bug Fixes
 
-* args forwards compatibility ([5a9d636](https://github.com/oclif/oclif/commit/5a9d6360c58c1968e82aa6d9ff27227367701f79))
+- **deps:** bump @oclif/core from 4.0.29 to 4.0.30 ([fd9743e](https://github.com/oclif/oclif/commit/fd9743e57006131dfadb306ce486a02acd08e313))
 
+## [4.15.12](https://github.com/oclif/oclif/compare/4.15.11...4.15.12) (2024-10-21)
 
+### Bug Fixes
 
-## [3.4.4](https://github.com/oclif/oclif/compare/3.4.3...3.4.4) (2023-01-18)
+- **deps:** bump @aws-sdk/client-s3 from 3.670.0 to 3.676.0 ([#1586](https://github.com/oclif/oclif/issues/1586)) ([d5735a6](https://github.com/oclif/oclif/commit/d5735a68483a42a96d20ec03745832d5f756ede1))
 
+## [4.15.11](https://github.com/oclif/oclif/compare/4.15.10...4.15.11) (2024-10-21)
 
 ### Bug Fixes
 
-* bump oclif/core ([f488b16](https://github.com/oclif/oclif/commit/f488b1693d8ae0ee1529f3d25797375dd0f2d3aa))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.665.0 to 3.675.0 ([#1581](https://github.com/oclif/oclif/issues/1581)) ([6cbe925](https://github.com/oclif/oclif/commit/6cbe925d608daf3b81448a5037ba494456c8c5d4))
 
+## [4.15.10](https://github.com/oclif/oclif/compare/4.15.9...4.15.10) (2024-10-21)
 
+### Bug Fixes
 
-## [3.4.3](https://github.com/oclif/oclif/compare/3.4.2...3.4.3) (2022-12-27)
+- **deps:** bump @oclif/core from 4.0.28 to 4.0.29 ([#1584](https://github.com/oclif/oclif/issues/1584)) ([f36e7bd](https://github.com/oclif/oclif/commit/f36e7bd09055c9db969b2acc02ff1c5b557ba1fc))
 
+## [4.15.9](https://github.com/oclif/oclif/compare/4.15.8...4.15.9) (2024-10-15)
 
 ### Bug Fixes
 
-* make oclif.s3.folder optional for --indexes ([#1063](https://github.com/oclif/oclif/issues/1063)) ([df9db2f](https://github.com/oclif/oclif/commit/df9db2fa2906f5e0322c5e8fd8eddacfecee24ca))
+- add explicit error when `files` is missing from package.json ([#1577](https://github.com/oclif/oclif/issues/1577)) ([#1578](https://github.com/oclif/oclif/issues/1578)) ([2ebfb00](https://github.com/oclif/oclif/commit/2ebfb00a1dc57db5908604eb23a06a2745dc1238))
 
+## [4.15.8](https://github.com/oclif/oclif/compare/4.15.7...4.15.8) (2024-10-14)
 
+### Bug Fixes
 
-## [3.4.2](https://github.com/oclif/oclif/compare/3.4.1...3.4.2) (2022-12-07)
+- **deps:** bump @aws-sdk/client-s3 from 3.665.0 to 3.670.0 ([5050c3e](https://github.com/oclif/oclif/commit/5050c3e3843d92600c59a993f5359fb8532397e8))
 
+## [4.15.7](https://github.com/oclif/oclif/compare/4.15.6...4.15.7) (2024-10-13)
 
 ### Bug Fixes
 
-* win pack error ([#1054](https://github.com/oclif/oclif/issues/1054)) ([bc23384](https://github.com/oclif/oclif/commit/bc233845270c4b9a7d61b7c411a369ed65d45886))
+- **deps:** bump @oclif/core from 4.0.27 to 4.0.28 ([8860e94](https://github.com/oclif/oclif/commit/8860e945e2464686887295b168dafa26fd9def3b))
 
+## [4.15.6](https://github.com/oclif/oclif/compare/4.15.5...4.15.6) (2024-10-09)
 
+### Bug Fixes
 
-## [3.4.1](https://github.com/oclif/oclif/compare/3.4.0...3.4.1) (2022-12-05)
+- improve logging in promote ([#1568](https://github.com/oclif/oclif/issues/1568)) ([dcd0804](https://github.com/oclif/oclif/commit/dcd08040f74a30116670ef0817836b4c8218e395))
 
+## [4.15.5](https://github.com/oclif/oclif/compare/4.15.4...4.15.5) (2024-10-06)
 
 ### Bug Fixes
 
-* json output formatting ([#1051](https://github.com/oclif/oclif/issues/1051)) ([25d1513](https://github.com/oclif/oclif/commit/25d15133cc93ce27372e6c90279932b14e4dae39))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.662.0 to 3.665.0 ([f8e429a](https://github.com/oclif/oclif/commit/f8e429aff05693f50e862f6ab32df77538b88e1f))
 
+## [4.15.4](https://github.com/oclif/oclif/compare/4.15.3...4.15.4) (2024-10-06)
 
+### Bug Fixes
 
-# [3.4.0](https://github.com/oclif/oclif/compare/3.3.1...3.4.0) (2022-12-05)
+- **deps:** bump @oclif/plugin-help from 6.2.13 to 6.2.14 ([a258ab8](https://github.com/oclif/oclif/commit/a258ab8a7862cbf2da01cc45c795328f4c3014a0))
 
+## [4.15.3](https://github.com/oclif/oclif/compare/4.15.2...4.15.3) (2024-10-06)
 
-### Features
+### Bug Fixes
 
-* remove qq and parallelize build/pack/promote ([#1035](https://github.com/oclif/oclif/issues/1035)) ([db2a858](https://github.com/oclif/oclif/commit/db2a85873de63a9bce0a16f11916f38974ee7494))
+- **deps:** bump @aws-sdk/client-s3 from 3.663.0 to 3.665.0 ([c5bb708](https://github.com/oclif/oclif/commit/c5bb708935f4f0af6a679085727237881b8bcc6a))
 
+## [4.15.2](https://github.com/oclif/oclif/compare/4.15.1...4.15.2) (2024-10-03)
 
+### Bug Fixes
 
-## [3.3.1](https://github.com/oclif/oclif/compare/3.3.0...3.3.1) (2022-12-04)
+- pass in respectNoCacheDefault to help ([#1566](https://github.com/oclif/oclif/issues/1566)) ([d4d3066](https://github.com/oclif/oclif/commit/d4d30663869a7e9daee2c582f1be87ce2d7a88c7))
 
+## [4.15.1](https://github.com/oclif/oclif/compare/4.15.0...4.15.1) (2024-10-02)
 
 ### Bug Fixes
 
-* **deps:** bump concurrently from 7.5.0 to 7.6.0 ([49b301e](https://github.com/oclif/oclif/commit/49b301e5fa9ad726af05f2dab5b273afd89983f8))
+- add --ignore-missing to promote ([#1567](https://github.com/oclif/oclif/issues/1567)) ([93c34f3](https://github.com/oclif/oclif/commit/93c34f30df225cf3f1dbf1426e04c75d7aef2314))
 
+# [4.15.0](https://github.com/oclif/oclif/compare/4.14.36...4.15.0) (2024-10-02)
 
+### Features
 
-# [3.3.0](https://github.com/oclif/oclif/compare/3.2.31...3.3.0) (2022-11-29)
+- pack win32-arm64 tarballs ([#1559](https://github.com/oclif/oclif/issues/1559)) ([fc165fe](https://github.com/oclif/oclif/commit/fc165fe5fabeb108e9b371bb7a50a31f60a0b902))
 
+## [4.14.36](https://github.com/oclif/oclif/compare/4.14.35...4.14.36) (2024-09-29)
 
-### Features
+### Bug Fixes
 
-* add 'target' argument when packing/uploading macOS ([#1033](https://github.com/oclif/oclif/issues/1033)) ([fb6473d](https://github.com/oclif/oclif/commit/fb6473d18d29e924384a9cfec4f6caca04ce233c))
+- **deps:** bump @oclif/core from 4.0.19 to 4.0.23 ([8b77856](https://github.com/oclif/oclif/commit/8b7785621e9129a2c07a18d6fe67c52bc1039254))
 
+## [4.14.35](https://github.com/oclif/oclif/compare/4.14.34...4.14.35) (2024-09-22)
 
+### Bug Fixes
 
-## [3.2.31](https://github.com/oclif/oclif/compare/3.2.30...3.2.31) (2022-11-27)
+- **deps:** bump @inquirer/select from 2.3.10 to 2.5.0 ([6d9e2d3](https://github.com/oclif/oclif/commit/6d9e2d3d34be749115a080d76cbc0df1cc038714))
 
+## [4.14.34](https://github.com/oclif/oclif/compare/4.14.33...4.14.34) (2024-09-15)
 
 ### Bug Fixes
 
-* **deps:** bump github-slugger from 1.4.0 to 1.5.0 ([a41baca](https://github.com/oclif/oclif/commit/a41baca347b3115452ff03aa4d0e603a1454c0cf))
+- **deps:** bump @oclif/plugin-not-found from 3.2.16 to 3.2.21 ([09bf78d](https://github.com/oclif/oclif/commit/09bf78d0029a347caea1a54f0af0f31ae9469c13))
 
+## [4.14.33](https://github.com/oclif/oclif/compare/4.14.32...4.14.33) (2024-09-15)
 
+### Bug Fixes
 
-## [3.2.30](https://github.com/oclif/oclif/compare/3.2.29...3.2.30) (2022-11-27)
+- **deps:** bump @aws-sdk/client-s3 from 3.645.0 to 3.651.1 ([0b696c8](https://github.com/oclif/oclif/commit/0b696c8d4ebb6d1deb7777f81552668ea9a1ec96))
 
+## [4.14.32](https://github.com/oclif/oclif/compare/4.14.31...4.14.32) (2024-09-13)
 
 ### Bug Fixes
 
-* **deps:** bump minimatch from 3.0.4 to 3.1.2 ([dcd7ba2](https://github.com/oclif/oclif/commit/dcd7ba26816e3564d95579f31d3316b4cea8c712))
+- **deps:** bump path-to-regexp from 6.2.1 to 6.3.0 ([4258e66](https://github.com/oclif/oclif/commit/4258e668578729524b737560de0c6154d8d43b46))
 
+## [4.14.31](https://github.com/oclif/oclif/compare/4.14.30...4.14.31) (2024-09-08)
 
+### Bug Fixes
 
-## [3.2.29](https://github.com/oclif/oclif/compare/3.2.28...3.2.29) (2022-11-20)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.637.0 to 3.645.0 ([6f9f724](https://github.com/oclif/oclif/commit/6f9f7241d4f2e3093a7c492be56781e5345c3eef))
 
+## [4.14.30](https://github.com/oclif/oclif/compare/4.14.29...4.14.30) (2024-09-08)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-help from 5.1.16 to 5.1.19 ([ac48fd7](https://github.com/oclif/oclif/commit/ac48fd702dc916f3e10ea9a8faed737d376ae0ac))
+- **deps:** bump @aws-sdk/client-s3 from 3.633.0 to 3.645.0 ([0dfa8df](https://github.com/oclif/oclif/commit/0dfa8df6100e97ad8d15cbbd668cc315da983a58))
 
+## [4.14.29](https://github.com/oclif/oclif/compare/4.14.28...4.14.29) (2024-09-02)
 
+### Bug Fixes
 
-## [3.2.28](https://github.com/oclif/oclif/compare/3.2.27...3.2.28) (2022-11-20)
+- **deps:** bump @oclif/plugin-help from 6.2.8 to 6.2.10 ([0ef191a](https://github.com/oclif/oclif/commit/0ef191a19ffd2ec4bbfc8f7306e6155147242150))
 
+## [4.14.28](https://github.com/oclif/oclif/compare/4.14.27...4.14.28) (2024-09-01)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-warn-if-update-available ([e096886](https://github.com/oclif/oclif/commit/e096886d375ca53f19ec49bb654615cfa9458a93))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.624.0 to 3.637.0 ([ee4655c](https://github.com/oclif/oclif/commit/ee4655c057284b9f124873a52b86ee5ea42159d9))
 
+## [4.14.27](https://github.com/oclif/oclif/compare/4.14.26...4.14.27) (2024-08-30)
 
+### Bug Fixes
 
-## [3.2.27](https://github.com/oclif/oclif/compare/3.2.26...3.2.27) (2022-11-13)
+- add pnpm lock option ([#1527](https://github.com/oclif/oclif/issues/1527)) ([#1528](https://github.com/oclif/oclif/issues/1528)) ([846c772](https://github.com/oclif/oclif/commit/846c7722be50a29bee41d58b1423146545d814e8))
 
+## [4.14.26](https://github.com/oclif/oclif/compare/4.14.25...4.14.26) (2024-08-26)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-warn-if-update-available ([3f83f13](https://github.com/oclif/oclif/commit/3f83f132f85641b05eee0dc7bec82bcc2fdf103e))
+- **deps:** bump @oclif/plugin-not-found from 3.2.15 to 3.2.16 ([0d5c354](https://github.com/oclif/oclif/commit/0d5c3546daefecd544e5557add5dd04d218583fb))
 
+## [4.14.25](https://github.com/oclif/oclif/compare/4.14.24...4.14.25) (2024-08-25)
 
+### Bug Fixes
 
-## [3.2.26](https://github.com/oclif/oclif/compare/3.2.25...3.2.26) (2022-11-13)
+- **deps:** bump sort-package-json from 2.10.0 to 2.10.1 ([7ac1388](https://github.com/oclif/oclif/commit/7ac1388514246e613ee68e94b7a8eccbca1e7305))
 
+## [4.14.24](https://github.com/oclif/oclif/compare/4.14.23...4.14.24) (2024-08-25)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/core from 1.20.0 to 1.20.3 ([dfc7df1](https://github.com/oclif/oclif/commit/dfc7df1cfb477531c7ed88798e4de1a41795a0db))
-* **deps:** bump @oclif/core from 1.20.3 to 1.20.4 ([17b0394](https://github.com/oclif/oclif/commit/17b039479f261960fc9df21041445589737ad855))
+- **deps:** bump micromatch from 4.0.7 to 4.0.8 ([609a62d](https://github.com/oclif/oclif/commit/609a62dccb43b50908686bf5a25789224d2060e8))
 
+## [4.14.23](https://github.com/oclif/oclif/compare/4.14.22...4.14.23) (2024-08-25)
 
+### Bug Fixes
 
-## [3.2.25](https://github.com/oclif/oclif/compare/3.2.24...3.2.25) (2022-11-06)
+- **deps:** bump @oclif/core from 4.0.17 to 4.0.19 ([03b4e87](https://github.com/oclif/oclif/commit/03b4e87c12c9734cdc714924499be0efb0b2a86f))
 
+## [4.14.22](https://github.com/oclif/oclif/compare/4.14.21...4.14.22) (2024-08-19)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-not-found from 2.3.6 to 2.3.7 ([24925b0](https://github.com/oclif/oclif/commit/24925b0d6d33db584f7a330ccc08c42489c028be))
+- **deps:** bump @aws-sdk/client-s3 from 3.614.0 to 3.633.0 ([65d5c4d](https://github.com/oclif/oclif/commit/65d5c4dac76128cb784022a8704dadb768191426))
 
+## [4.14.21](https://github.com/oclif/oclif/compare/4.14.20...4.14.21) (2024-08-18)
 
+### Bug Fixes
 
-## [3.2.24](https://github.com/oclif/oclif/compare/3.2.23...3.2.24) (2022-10-30)
+- **deps:** bump @oclif/plugin-help from 6.2.7 to 6.2.8 ([d1c100d](https://github.com/oclif/oclif/commit/d1c100d4eedbc9628f7d279efb15857285f73392))
 
+## [4.14.20](https://github.com/oclif/oclif/compare/4.14.19...4.14.20) (2024-08-18)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/core from 1.18.0 to 1.20.0 ([a0a0a50](https://github.com/oclif/oclif/commit/a0a0a5020e3b57a99c5f4533a097acef8d89ba30))
+- **deps:** bump @oclif/plugin-warn-if-update-available ([c7e93fe](https://github.com/oclif/oclif/commit/c7e93fe8af368af4df20237c5adad5df9547666e))
 
+## [4.14.19](https://github.com/oclif/oclif/compare/4.14.18...4.14.19) (2024-08-11)
 
+### Bug Fixes
 
-## [3.2.23](https://github.com/oclif/oclif/compare/3.2.22...3.2.23) (2022-10-30)
+- **deps:** bump @inquirer/confirm from 3.1.17 to 3.1.22 ([df30e35](https://github.com/oclif/oclif/commit/df30e3551e630e5aa4a7df2d101d016a3942b74d))
 
+## [4.14.18](https://github.com/oclif/oclif/compare/4.14.17...4.14.18) (2024-08-11)
 
 ### Bug Fixes
 
-* **deps:** bump concurrently from 7.4.0 to 7.5.0 ([08caed4](https://github.com/oclif/oclif/commit/08caed4f3af3c4540c893b1a7b4585b089707f0c))
+- **deps:** bump @oclif/plugin-not-found from 3.2.14 to 3.2.15 ([f01d400](https://github.com/oclif/oclif/commit/f01d400035334f610f3ee04d5e4fd784a512490d))
 
+## [4.14.17](https://github.com/oclif/oclif/compare/4.14.16...4.14.17) (2024-08-11)
 
+### Bug Fixes
 
-## [3.2.22](https://github.com/oclif/oclif/compare/3.2.21...3.2.22) (2022-10-23)
+- **deps:** bump @oclif/core from 4.0.16 to 4.0.17 ([330509d](https://github.com/oclif/oclif/commit/330509dd71f64c826376c70df14bb7886d6ddb0e))
 
+## [4.14.16](https://github.com/oclif/oclif/compare/4.14.15...4.14.16) (2024-08-11)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-not-found from 2.3.5 to 2.3.6 ([f886f7a](https://github.com/oclif/oclif/commit/f886f7a6d64a5ca33b0bac934abe770501cc480c))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.623.0 to 3.624.0 ([19ecdad](https://github.com/oclif/oclif/commit/19ecdada910ce44465c10b8719f630890d40fb28))
 
+## [4.14.15](https://github.com/oclif/oclif/compare/4.14.14...4.14.15) (2024-08-05)
 
+### Bug Fixes
 
-## [3.2.21](https://github.com/oclif/oclif/compare/3.2.20...3.2.21) (2022-10-23)
+- **deps:** bump semver from 7.6.2 to 7.6.3 ([6c63e16](https://github.com/oclif/oclif/commit/6c63e168f3b0a0bea94a0bcca82756943a2066c3))
 
+## [4.14.14](https://github.com/oclif/oclif/compare/4.14.13...4.14.14) (2024-08-04)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-help from 5.1.15 to 5.1.16 ([18a6633](https://github.com/oclif/oclif/commit/18a66335f66433fc76ab5ee5703812bc1c2e0b93))
+- **deps:** bump @oclif/plugin-help from 6.2.2 to 6.2.7 ([6da6ad3](https://github.com/oclif/oclif/commit/6da6ad332448fc58322738ea36260f61dd77883f))
 
+## [4.14.13](https://github.com/oclif/oclif/compare/4.14.12...4.14.13) (2024-08-04)
 
+### Bug Fixes
 
-## [3.2.20](https://github.com/oclif/oclif/compare/3.2.19...3.2.20) (2022-10-20)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.609.0 to 3.623.0 ([2abd2c9](https://github.com/oclif/oclif/commit/2abd2c975c86b387efc841025e73c25ba358345c))
 
+## [4.14.12](https://github.com/oclif/oclif/compare/4.14.11...4.14.12) (2024-07-29)
 
 ### Bug Fixes
 
-* deb pack privileges ([#987](https://github.com/oclif/oclif/issues/987)) ([5392841](https://github.com/oclif/oclif/commit/539284102e5f05779e5e96eae022756f8478bfae))
+- **deps:** bump @inquirer/input from 2.2.1 to 2.2.4 ([#1495](https://github.com/oclif/oclif/issues/1495)) ([8a0bdf7](https://github.com/oclif/oclif/commit/8a0bdf76667358cff19919dca12d48f7fc469cb6))
 
+## [4.14.11](https://github.com/oclif/oclif/compare/4.14.10...4.14.11) (2024-07-28)
 
+### Bug Fixes
 
-## [3.2.19](https://github.com/oclif/oclif/compare/3.2.18...3.2.19) (2022-10-16)
+- **deps:** bump @oclif/core from 4.0.12 to 4.0.16 ([0cca50f](https://github.com/oclif/oclif/commit/0cca50ff3508343998ee2b2206c72de1e5620c18))
 
+## [4.14.10](https://github.com/oclif/oclif/compare/4.14.9...4.14.10) (2024-07-28)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/core from 1.16.4 to 1.18.0 ([badd7b0](https://github.com/oclif/oclif/commit/badd7b0564a59f50833dd659c5bbfc6d50ac3591))
+- **deps:** bump @oclif/plugin-not-found from 3.2.3 to 3.2.14 ([ec78494](https://github.com/oclif/oclif/commit/ec7849416ae5ba90fce055a5abd4821dbcab950c))
 
+## [4.14.9](https://github.com/oclif/oclif/compare/4.14.8...4.14.9) (2024-07-23)
 
+### Bug Fixes
 
-## [3.2.18](https://github.com/oclif/oclif/compare/3.2.17...3.2.18) (2022-10-16)
+- husky 9.1.1 fix ([#1491](https://github.com/oclif/oclif/issues/1491)) ([0762e0e](https://github.com/oclif/oclif/commit/0762e0e60a6776f7f46fe9cd12d5990a579a4a8e))
 
+## [4.14.8](https://github.com/oclif/oclif/compare/4.14.7...4.14.8) (2024-07-21)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-not-found from 2.3.4 to 2.3.5 ([b9a658e](https://github.com/oclif/oclif/commit/b9a658e22ebdbe4b8c14419b9b61606d9386a8cc))
+- **deps:** bump @oclif/core from 4.0.8 to 4.0.12 ([42dbb54](https://github.com/oclif/oclif/commit/42dbb54f42e397e2b8e3159f4a8ab84fab0becc3))
 
+## [4.14.7](https://github.com/oclif/oclif/compare/4.14.6...4.14.7) (2024-07-21)
 
+### Bug Fixes
 
-## [3.2.17](https://github.com/oclif/oclif/compare/3.2.16...3.2.17) (2022-10-16)
+- **deps:** bump @inquirer/confirm from 3.1.14 to 3.1.16 ([27e3972](https://github.com/oclif/oclif/commit/27e3972fbb8620e1da3f643451b07bf3cab66061))
 
+## [4.14.6](https://github.com/oclif/oclif/compare/4.14.5...4.14.6) (2024-07-16)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-help from 5.1.14 to 5.1.15 ([33b7925](https://github.com/oclif/oclif/commit/33b79250e7af4f7f38ffb2ebae43af900b96e829))
+- update esm dev.js shebang ([#1482](https://github.com/oclif/oclif/issues/1482)) ([8a75b25](https://github.com/oclif/oclif/commit/8a75b25d3113e1d1c7a8312c50e56d8b04dcfd26))
 
+## [4.14.5](https://github.com/oclif/oclif/compare/4.14.4...4.14.5) (2024-07-15)
 
+### Bug Fixes
 
-## [3.2.16](https://github.com/oclif/oclif/compare/3.2.15...3.2.16) (2022-10-09)
+- **deps:** bump @inquirer/confirm from 3.1.11 to 3.1.14 ([a7bd40d](https://github.com/oclif/oclif/commit/a7bd40daccac681a09b6b1db368e4281518ca6ce))
 
+## [4.14.4](https://github.com/oclif/oclif/compare/4.14.3...4.14.4) (2024-07-14)
 
 ### Bug Fixes
 
-* **deps:** bump aws-sdk from 2.1227.0 to 2.1231.0 ([e1234f5](https://github.com/oclif/oclif/commit/e1234f5a1db7b3cb1b8c0278fa2f3382b7eb6f69))
+- **deps:** bump @inquirer/input from 2.1.9 to 2.2.1 ([0164495](https://github.com/oclif/oclif/commit/0164495a3b864e1160614c6fb9607898ca78d098))
 
+## [4.14.3](https://github.com/oclif/oclif/compare/4.14.2...4.14.3) (2024-07-14)
 
+### Bug Fixes
 
-## [3.2.15](https://github.com/oclif/oclif/compare/3.2.14...3.2.15) (2022-10-09)
+- **deps:** bump validate-npm-package-name from 5.0.0 to 5.0.1 ([7759b2a](https://github.com/oclif/oclif/commit/7759b2af4dc1c2023da8f2e0877f0abd398e1bd5))
 
+## [4.14.2](https://github.com/oclif/oclif/compare/4.14.1...4.14.2) (2024-07-14)
 
 ### Bug Fixes
 
-* **deps:** bump semver from 7.3.7 to 7.3.8 ([cda6620](https://github.com/oclif/oclif/commit/cda6620b5c69859f7474b1ef009567256b7ba427))
+- **deps:** bump normalize-package-data from 6.0.1 to 6.0.2 ([db8c4cf](https://github.com/oclif/oclif/commit/db8c4cfa6f54d0a7dfa2aab15ef1bc3607b0bb37))
 
+## [4.14.1](https://github.com/oclif/oclif/compare/4.14.0...4.14.1) (2024-07-14)
 
+### Bug Fixes
 
-## [3.2.14](https://github.com/oclif/oclif/compare/3.2.13...3.2.14) (2022-10-09)
+- **deps:** bump @aws-sdk/client-s3 from 3.609.0 to 3.614.0 ([9686a6d](https://github.com/oclif/oclif/commit/9686a6dd4ad7041b5d5fff8e9d9a60385d38e8f7))
 
+# [4.14.0](https://github.com/oclif/oclif/compare/4.13.16...4.14.0) (2024-07-09)
 
-### Bug Fixes
+### Features
 
-* **deps:** bump @oclif/plugin-not-found from 2.3.3 to 2.3.4 ([1bb086b](https://github.com/oclif/oclif/commit/1bb086b87fec53d858e51092a32f493bb79ab399))
+- dry-run flag and debug logs for generate ([#1471](https://github.com/oclif/oclif/issues/1471)) ([ac6355c](https://github.com/oclif/oclif/commit/ac6355cb55106ae2756791722325323cd4660c95))
 
+## [4.13.16](https://github.com/oclif/oclif/compare/4.13.15...4.13.16) (2024-07-08)
 
+### Bug Fixes
 
-## [3.2.13](https://github.com/oclif/oclif/compare/3.2.12...3.2.13) (2022-10-02)
+- **deps:** bump @oclif/core from 4.0.3 to 4.0.8 ([e10b8c8](https://github.com/oclif/oclif/commit/e10b8c8f5ac9119ee93eb8f4bb4ab4b4aa0c07a8))
 
+## [4.13.15](https://github.com/oclif/oclif/compare/4.13.14...4.13.15) (2024-07-07)
 
 ### Bug Fixes
 
-* **deps:** bump aws-sdk from 2.1226.0 to 2.1227.0 ([6526f12](https://github.com/oclif/oclif/commit/6526f122ced48b7f8b6ca33dac5d5829ee4b6d1d))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.592.0 to 3.609.0 ([981f2bf](https://github.com/oclif/oclif/commit/981f2bf8e73faeb2541db985aa772a50c4a32023))
 
+## [4.13.14](https://github.com/oclif/oclif/compare/4.13.13...4.13.14) (2024-07-07)
 
+### Bug Fixes
 
-## [3.2.12](https://github.com/oclif/oclif/compare/3.2.11...3.2.12) (2022-10-01)
+- **deps:** bump @aws-sdk/client-s3 from 3.606.0 to 3.609.0 ([86f58e7](https://github.com/oclif/oclif/commit/86f58e782bf36f76fe2834b9aa066fe7884e4c71))
 
+## [4.13.13](https://github.com/oclif/oclif/compare/4.13.12...4.13.13) (2024-07-07)
 
 ### Bug Fixes
 
-* **deps:** bump aws-sdk from 2.1116.0 to 2.1226.0 ([6ad1679](https://github.com/oclif/oclif/commit/6ad1679dc2492c8ab484c7171beb99ae8eaf1714))
+- **deps:** bump @inquirer/select from 2.3.5 to 2.3.10 ([81bd987](https://github.com/oclif/oclif/commit/81bd987a38677057920715aa78c8bc48bdf1ebd6))
 
+## [4.13.12](https://github.com/oclif/oclif/compare/4.13.11...4.13.12) (2024-06-30)
 
+### Bug Fixes
 
-## [3.2.11](https://github.com/oclif/oclif/compare/3.2.10...3.2.11) (2022-09-30)
+- **deps:** bump @aws-sdk/client-s3 from 3.600.0 to 3.606.0 ([f957fe0](https://github.com/oclif/oclif/commit/f957fe0c51385ee88fcc0e999913f72591ef4e67))
 
+## [4.13.11](https://github.com/oclif/oclif/compare/4.13.10...4.13.11) (2024-06-30)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-not-found from 2.3.1 to 2.3.3 ([f3142a7](https://github.com/oclif/oclif/commit/f3142a74d02f9770c9683ffc05204238ac1cd4bc))
+- **deps:** bump @inquirer/confirm from 3.1.10 to 3.1.11 ([040924c](https://github.com/oclif/oclif/commit/040924c409b1f3afa5e2988bf71b0263ec339373))
 
+## [4.13.10](https://github.com/oclif/oclif/compare/4.13.9...4.13.10) (2024-06-23)
 
+### Bug Fixes
 
-## [3.2.10](https://github.com/oclif/oclif/compare/3.2.9...3.2.10) (2022-09-30)
+- **deps:** bump @aws-sdk/client-s3 from 3.583.0 to 3.600.0 ([bafd925](https://github.com/oclif/oclif/commit/bafd92544e6456ba61987c307a42aecd4c39b924))
 
+## [4.13.9](https://github.com/oclif/oclif/compare/4.13.8...4.13.9) (2024-06-23)
 
 ### Bug Fixes
 
-* **deps:** bump concurrently from 7.0.0 to 7.4.0 ([f5781ce](https://github.com/oclif/oclif/commit/f5781ce60c8fdf55dbbf41869c2b47a250c023f1))
+- **deps:** bump @inquirer/confirm from 3.1.9 to 3.1.10 ([3e083aa](https://github.com/oclif/oclif/commit/3e083aac477446e51d318ab115e405fe4018bb8c))
 
+## [4.13.8](https://github.com/oclif/oclif/compare/4.13.7...4.13.8) (2024-06-17)
 
+### Bug Fixes
 
-## [3.2.9](https://github.com/oclif/oclif/compare/3.2.8...3.2.9) (2022-09-29)
+- allow upload to succeed without buildmanifest ([#1449](https://github.com/oclif/oclif/issues/1449)) ([3cb1118](https://github.com/oclif/oclif/commit/3cb11180f8711a20c2aa83d58dbb530362ee5c70))
 
+## [4.13.7](https://github.com/oclif/oclif/compare/4.13.6...4.13.7) (2024-06-16)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-warn-if-update-available ([8d6a86c](https://github.com/oclif/oclif/commit/8d6a86cc91986862b5cff74db5c1f0b440caa09d))
+- **deps:** bump @oclif/plugin-help from 6.2.0 to 6.2.2 ([2401a69](https://github.com/oclif/oclif/commit/2401a6963a288ab4fe5caadfad129fee9fe691ab))
 
+## [4.13.6](https://github.com/oclif/oclif/compare/4.13.5...4.13.6) (2024-06-13)
 
+### Bug Fixes
 
-## [3.2.8](https://github.com/oclif/oclif/compare/3.2.7...3.2.8) (2022-09-29)
+- **deps:** bump braces from 3.0.2 to 3.0.3 ([2d70057](https://github.com/oclif/oclif/commit/2d70057b5482a309de356b545f7c6e164f74a66d))
 
+## [4.13.5](https://github.com/oclif/oclif/compare/4.13.4...4.13.5) (2024-06-10)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/core from 1.16.1 to 1.16.4 ([f546267](https://github.com/oclif/oclif/commit/f546267e21727b463409619fa320a7e724ec7186))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.574.0 to 3.592.0 ([3c8e7c3](https://github.com/oclif/oclif/commit/3c8e7c3d296fadb94b1541ceaccbd603220461ab))
 
+## [4.13.4](https://github.com/oclif/oclif/compare/4.13.3...4.13.4) (2024-06-09)
 
+### Bug Fixes
 
-## [3.2.7](https://github.com/oclif/oclif/compare/3.2.6...3.2.7) (2022-09-29)
+- **deps:** bump @oclif/plugin-not-found from 3.2.1 to 3.2.3 ([336bfb0](https://github.com/oclif/oclif/commit/336bfb00f273d489285b35a6921ac5482b6ef648))
 
+## [4.13.3](https://github.com/oclif/oclif/compare/4.13.2...4.13.3) (2024-06-09)
 
 ### Bug Fixes
 
-* **deps:** bump @oclif/plugin-help from 5.1.12 to 5.1.14 ([0a5a33c](https://github.com/oclif/oclif/commit/0a5a33ce652e79c37da3f56ae48fbe10a0cbcd0c))
+- **deps:** bump @oclif/plugin-help from 6.0.21 to 6.2.0 ([e8ff8e4](https://github.com/oclif/oclif/commit/e8ff8e4a79f4a173392b4dc315354541db4e085e))
 
+## [4.13.2](https://github.com/oclif/oclif/compare/4.13.1...4.13.2) (2024-06-09)
 
+### Bug Fixes
 
-## [3.2.6](https://github.com/oclif/oclif/compare/3.2.5...3.2.6) (2022-09-29)
+- **deps:** bump @oclif/core from 4.0.0 to 4.0.3 ([a5b9fb9](https://github.com/oclif/oclif/commit/a5b9fb9f7f054b40ca857da59610189c0cfe914d))
 
+## [4.13.1](https://github.com/oclif/oclif/compare/4.13.0...4.13.1) (2024-06-07)
 
 ### Bug Fixes
 
-* **deps:** bump yeoman-environment from 3.9.1 to 3.11.1 ([9ca60df](https://github.com/oclif/oclif/commit/9ca60dff900142597bfba3d86bf0977d82173719))
+- launch config for ESM ([#1439](https://github.com/oclif/oclif/issues/1439)) ([9e41e95](https://github.com/oclif/oclif/commit/9e41e95858ef9a31e221c5234745e7440ce8f0ad))
 
+# [4.13.0](https://github.com/oclif/oclif/compare/4.12.4...4.13.0) (2024-06-04)
 
+### Features
 
-## [3.2.5](https://github.com/oclif/oclif/compare/3.2.4...3.2.5) (2022-09-27)
+- generate cli with core v4 ([#1435](https://github.com/oclif/oclif/issues/1435)) ([d0b5a98](https://github.com/oclif/oclif/commit/d0b5a98ba44eed29d84310e5bf8b3ab829e53b52))
 
+## [4.12.4](https://github.com/oclif/oclif/compare/4.12.3...4.12.4) (2024-06-04)
 
 ### Bug Fixes
 
-* wrongly packaging child bundles on MacOS ([#971](https://github.com/oclif/oclif/issues/971)) ([de64974](https://github.com/oclif/oclif/commit/de649743c9584ffbe1ad150cb485530e04c1621d))
+- core v4 ([70e7ee0](https://github.com/oclif/oclif/commit/70e7ee0c1e1885a162aeaa3d726ed188b2c5aca3))
 
+## [4.12.3](https://github.com/oclif/oclif/compare/4.12.2...4.12.3) (2024-06-03)
 
+### Bug Fixes
 
-## [3.2.4](https://github.com/oclif/oclif/compare/3.2.3...3.2.4) (2022-09-27)
+- **deps:** bump @oclif/plugin-not-found from 3.1.10 to 3.2.1 ([82a3bf8](https://github.com/oclif/oclif/commit/82a3bf8d7b7ae902b5ede92b5f81f4de248ad289))
 
+## [4.12.2](https://github.com/oclif/oclif/compare/4.12.1...4.12.2) (2024-06-02)
 
 ### Bug Fixes
 
-* add toc tag to readme command description ([#924](https://github.com/oclif/oclif/issues/924)) ([5bdd481](https://github.com/oclif/oclif/commit/5bdd4819b513558082010035bef4230d3d111957))
+- **deps:** bump @inquirer/select from 2.3.4 to 2.3.5 ([8e053e6](https://github.com/oclif/oclif/commit/8e053e6c64b950c8d50ec856ae10a4b9c0fbcadf))
 
+## [4.12.1](https://github.com/oclif/oclif/compare/4.12.0...4.12.1) (2024-06-02)
 
+### Bug Fixes
 
-## [3.2.3](https://github.com/oclif/oclif/compare/v3.2.2...3.2.3) (2022-09-27)
+- **deps:** bump @inquirer/input from 2.1.8 to 2.1.9 ([2448e6d](https://github.com/oclif/oclif/commit/2448e6dd7b67cac2085ef0585708d7d119ba9a77))
 
+# [4.12.0](https://github.com/oclif/oclif/compare/4.11.3...4.12.0) (2024-05-31)
 
 ### Bug Fixes
 
-* Update hooks generator to point to ./dist/hooks instead of ./src/hooks ([#904](https://github.com/oclif/oclif/issues/904)) ([fd48e54](https://github.com/oclif/oclif/commit/fd48e548863e3eb27f22a2de9e0e274ae56a9448))
-
+- clarify error message ([444d06e](https://github.com/oclif/oclif/commit/444d06ea485232b1355b59c376805997c72be720))
+- handle undefined node options ([ce9215a](https://github.com/oclif/oclif/commit/ce9215aa81c737bf75d47dc64360ae5c67d8db63))
 
+### Features
 
-## [3.2.2](https://github.com/oclif/oclif/compare/v3.2.1...v3.2.2) (2022-09-16)
+- use @oclif/core v4 ([72be5ca](https://github.com/oclif/oclif/commit/72be5ca808aca51a076e93341fbb1b8252908d4f))
 
+## [4.11.3](https://github.com/oclif/oclif/compare/4.11.2...4.11.3) (2024-05-26)
 
+### Bug Fixes
 
-## [3.2.1](https://github.com/oclif/oclif/compare/v3.2.0...v3.2.1) (2022-09-09)
+- **deps:** bump @inquirer/input from 2.1.1 to 2.1.8 ([b60363f](https://github.com/oclif/oclif/commit/b60363f4f971e5bb136df58d6ebea6202ea8b3b8))
 
+## [4.11.2](https://github.com/oclif/oclif/compare/4.11.1...4.11.2) (2024-05-26)
 
 ### Bug Fixes
 
-* bump oclif/core ([21aa0d7](https://github.com/oclif/oclif/commit/21aa0d754f0afe5a2e9f25cd1c32266ef2b9ac2d))
+- **deps:** bump @oclif/plugin-not-found from 3.1.9 to 3.1.10 ([2ac04b6](https://github.com/oclif/oclif/commit/2ac04b62b95b8004a62016c7e0f99ba9c05f6018))
 
+## [4.11.1](https://github.com/oclif/oclif/compare/4.11.0...4.11.1) (2024-05-26)
 
+### Bug Fixes
 
-# [3.2.0](https://github.com/oclif/oclif/compare/v3.1.2...v3.2.0) (2022-09-06)
+- **deps:** bump @aws-sdk/client-s3 from 3.577.0 to 3.583.0 ([d815dd7](https://github.com/oclif/oclif/commit/d815dd75d09d4306152c5ca50cc4e3a897ca616d))
 
+# [4.11.0](https://github.com/oclif/oclif/compare/4.10.15...4.11.0) (2024-05-22)
 
 ### Features
 
-* add `--aliases` flag for readme command ([#925](https://github.com/oclif/oclif/issues/925)) ([#952](https://github.com/oclif/oclif/issues/952)) ([5bf2b5a](https://github.com/oclif/oclif/commit/5bf2b5a51210d554a1768d69fbf93c9c6f6b2b2a))
+- use oclif/test v4 ([#1420](https://github.com/oclif/oclif/issues/1420)) ([1f8dbd9](https://github.com/oclif/oclif/commit/1f8dbd9486c73d0288fae7ff18f0a84df26521d1))
 
+## [4.10.15](https://github.com/oclif/oclif/compare/4.10.14...4.10.15) (2024-05-19)
 
+### Bug Fixes
 
-## [3.1.2](https://github.com/oclif/oclif/compare/v3.1.1...v3.1.2) (2022-07-27)
+- **deps:** bump @inquirer/select from 2.3.2 to 2.3.4 ([1a22ccf](https://github.com/oclif/oclif/commit/1a22ccf4e692844632ff339a1ffee51fce34b79c))
 
+## [4.10.14](https://github.com/oclif/oclif/compare/4.10.13...4.10.14) (2024-05-19)
 
 ### Bug Fixes
 
-* await yeoman generators ([#926](https://github.com/oclif/oclif/issues/926)) ([da5a4d2](https://github.com/oclif/oclif/commit/da5a4d202be114fe7f0c00d2737a9faf8f4e19ab))
+- **deps:** bump @aws-sdk/client-s3 from 3.569.0 to 3.577.0 ([03ce3e4](https://github.com/oclif/oclif/commit/03ce3e43dc4fd1e866c3f0adf92f0d20a5cd6b1a))
 
+## [4.10.13](https://github.com/oclif/oclif/compare/4.10.12...4.10.13) (2024-05-19)
 
+### Bug Fixes
 
-## [3.1.1](https://github.com/oclif/oclif/compare/v3.1.0...v3.1.1) (2022-07-15)
+- **deps:** bump semver from 7.6.0 to 7.6.2 ([62aaab3](https://github.com/oclif/oclif/commit/62aaab39b88fe9038c232c2f293356a523f46167))
 
+## [4.10.12](https://github.com/oclif/oclif/compare/4.10.11...4.10.12) (2024-05-19)
 
 ### Bug Fixes
 
-* readme for single command cli ([#916](https://github.com/oclif/oclif/issues/916)) ([242b34f](https://github.com/oclif/oclif/commit/242b34f62656b2c6ee8a1d0ecda8d98f8c1c5bbc))
+- **deps:** bump @oclif/plugin-warn-if-update-available ([79a09ea](https://github.com/oclif/oclif/commit/79a09ea26dbc1bd0b3c125d2d95cfa50d5215bc1))
 
+## [4.10.11](https://github.com/oclif/oclif/compare/4.10.10...4.10.11) (2024-05-14)
 
+### Bug Fixes
 
-# [3.1.0](https://github.com/oclif/oclif/compare/v3.0.1...v3.1.0) (2022-07-07)
+- bump plugin-not-found version ([#1414](https://github.com/oclif/oclif/issues/1414)) ([678c465](https://github.com/oclif/oclif/commit/678c465308ffe51a5c0a9fb348558237ae216b49))
 
+## [4.10.10](https://github.com/oclif/oclif/compare/4.10.9...4.10.10) (2024-05-13)
 
-### Features
+### Bug Fixes
 
-* build/pack in parallel ([#914](https://github.com/oclif/oclif/issues/914)) ([d86c722](https://github.com/oclif/oclif/commit/d86c722d8de66560c672c2fbdb338cc9a024caa2))
+- **deps:** bump normalize-package-data from 6.0.0 to 6.0.1 ([f79f26b](https://github.com/oclif/oclif/commit/f79f26bcd00f75554e3493e9b420ddd6fbbb1004))
 
+## [4.10.9](https://github.com/oclif/oclif/compare/4.10.8...4.10.9) (2024-05-12)
 
+### Bug Fixes
 
-## [3.0.1](https://github.com/oclif/oclif/compare/v3.0.0...v3.0.1) (2022-04-18)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([362f1e0](https://github.com/oclif/oclif/commit/362f1e01f2a485f52c3d9f3510a7c45ee936f8b5))
 
+## [4.10.8](https://github.com/oclif/oclif/compare/4.10.7...4.10.8) (2024-05-12)
 
 ### Bug Fixes
 
-* remove outdated code ([#866](https://github.com/oclif/oclif/issues/866)) ([e3f60a3](https://github.com/oclif/oclif/commit/e3f60a3109502bc59d1fbd71a3fbbd3668dcd3eb))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.569.0 to 3.574.0 ([187b606](https://github.com/oclif/oclif/commit/187b60636e9a63612cddbce1ccaf45f17c872579))
 
+## [4.10.7](https://github.com/oclif/oclif/compare/4.10.6...4.10.7) (2024-05-10)
 
+### Bug Fixes
 
-# [3.0.0](https://github.com/oclif/oclif/compare/v2.6.3...v3.0.0) (2022-04-13)
+- **readme:** read tsconfigs as JSONC instead of JSON ([#1405](https://github.com/oclif/oclif/issues/1405)) ([#1407](https://github.com/oclif/oclif/issues/1407)) ([5458b80](https://github.com/oclif/oclif/commit/5458b80ae60d329346ab25edcb4d379fa6bce791))
 
+## [4.10.6](https://github.com/oclif/oclif/compare/4.10.5...4.10.6) (2024-05-09)
 
+### Bug Fixes
 
-## [2.6.3](https://github.com/oclif/oclif/compare/v2.6.2...v2.6.3) (2022-03-31)
+- bump plugins ([#1404](https://github.com/oclif/oclif/issues/1404)) ([e8aa031](https://github.com/oclif/oclif/commit/e8aa0318e63a22c8eae520d84fa253c45cfec583))
 
+## [4.10.5](https://github.com/oclif/oclif/compare/4.10.4...4.10.5) (2024-05-08)
 
 ### Bug Fixes
 
-* update oclif/core ([7e86036](https://github.com/oclif/oclif/commit/7e86036b4e673003ad6226852260c929d62a1c39))
+- remove lodash.template ([19c27f9](https://github.com/oclif/oclif/commit/19c27f90a33a5028f330afa98740145a26bc68f9))
 
+## [4.10.4](https://github.com/oclif/oclif/compare/4.10.3...4.10.4) (2024-05-06)
 
+### Bug Fixes
 
-## [2.6.2](https://github.com/oclif/oclif/compare/v2.6.1...v2.6.2) (2022-03-31)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.535.0 to 3.569.0 ([b0b7a27](https://github.com/oclif/oclif/commit/b0b7a275cba5f3845cf2bb75661f20a186e6a5a4))
 
+## [4.10.3](https://github.com/oclif/oclif/compare/4.10.2...4.10.3) (2024-05-05)
 
 ### Bug Fixes
 
-* revert building mac m1 packages, wait for PR [#849](https://github.com/oclif/oclif/issues/849) ([#855](https://github.com/oclif/oclif/issues/855)) ([e5b68af](https://github.com/oclif/oclif/commit/e5b68af8510b0419ec48d76087ed0bec61fc81ad))
+- **deps:** bump @aws-sdk/client-s3 from 3.565.0 to 3.569.0 ([6960f6a](https://github.com/oclif/oclif/commit/6960f6a42195395decd7b491dc908afeb3ebade1))
 
+## [4.10.2](https://github.com/oclif/oclif/compare/4.10.1...4.10.2) (2024-05-05)
 
+### Bug Fixes
 
-## [2.6.1](https://github.com/oclif/oclif/compare/v2.6.0...v2.6.1) (2022-03-23)
+- **deps:** bump @oclif/core from 3.26.4 to 3.26.5 ([7b3e977](https://github.com/oclif/oclif/commit/7b3e97701880e2026ad5e4d5576da0d1ea82966f))
 
+## [4.10.1](https://github.com/oclif/oclif/compare/4.10.0...4.10.1) (2024-05-01)
 
+### Bug Fixes
 
-# [2.6.0](https://github.com/oclif/oclif/compare/v2.5.0...v2.6.0) (2022-03-14)
+- update generate description ([ba39334](https://github.com/oclif/oclif/commit/ba39334647a473004bfb6b0fb209cb26e9c8bf91))
 
+# [4.10.0](https://github.com/oclif/oclif/compare/4.9.3...4.10.0) (2024-05-01)
 
 ### Features
 
-* Add support to build darwin-arm64 for `oclif pack macos` ([#847](https://github.com/oclif/oclif/issues/847)) ([61a96c2](https://github.com/oclif/oclif/commit/61a96c2a1c435f5abce8c2348cf7756a4b997269))
+- no more template repos ([#1395](https://github.com/oclif/oclif/issues/1395)) ([ddab537](https://github.com/oclif/oclif/commit/ddab537a4a7803248f2f37edbc85b228a214126f)), closes [#1397](https://github.com/oclif/oclif/issues/1397)
 
+## [4.9.3](https://github.com/oclif/oclif/compare/4.9.2...4.9.3) (2024-04-29)
 
+### Bug Fixes
 
-# [2.5.0](https://github.com/oclif/oclif/compare/v2.4.5...v2.5.0) (2022-02-24)
+- **deps:** bump @inquirer/select from 2.2.1 to 2.3.2 ([#1390](https://github.com/oclif/oclif/issues/1390)) ([9573c8f](https://github.com/oclif/oclif/commit/9573c8f1ec1c1b687b497806a03f85668e41c29f))
 
+## [4.9.2](https://github.com/oclif/oclif/compare/4.9.1...4.9.2) (2024-04-29)
 
-### Features
+### Bug Fixes
 
-* remove all relevant directories on uninstall ([#831](https://github.com/oclif/oclif/issues/831)) ([acd986d](https://github.com/oclif/oclif/commit/acd986d53681b3840f17220b6e16fd8bb3c869f7))
+- **deps:** bump @aws-sdk/client-s3 from 3.554.0 to 3.565.0 ([#1394](https://github.com/oclif/oclif/issues/1394)) ([f379e3a](https://github.com/oclif/oclif/commit/f379e3a1e345b1ed291a75d3b1f64f746f899c11))
 
+## [4.9.1](https://github.com/oclif/oclif/compare/4.9.0...4.9.1) (2024-04-29)
 
+### Bug Fixes
 
-## [2.4.5](https://github.com/oclif/oclif/compare/v2.4.4...v2.4.5) (2022-02-17)
+- **deps:** bump @inquirer/confirm from 3.1.5 to 3.1.6 ([#1392](https://github.com/oclif/oclif/issues/1392)) ([e408eb3](https://github.com/oclif/oclif/commit/e408eb373baec8da8c593d20b8355322e47f8b67))
 
+# [4.9.0](https://github.com/oclif/oclif/compare/4.8.8...4.9.0) (2024-04-25)
 
+### Features
 
-## [2.4.4](https://github.com/oclif/oclif/compare/v2.4.3...v2.4.4) (2022-02-09)
+- no lockfiles in tarballs ([#1385](https://github.com/oclif/oclif/issues/1385)) ([4bfa96f](https://github.com/oclif/oclif/commit/4bfa96fdcb779eb3222d6560578d2d19c338e979)), closes [#1386](https://github.com/oclif/oclif/issues/1386)
 
+## [4.8.8](https://github.com/oclif/oclif/compare/4.8.7...4.8.8) (2024-04-21)
 
 ### Bug Fixes
 
-* fix tarball packing in paths with spaces ([#825](https://github.com/oclif/oclif/issues/825)) ([#826](https://github.com/oclif/oclif/issues/826)) ([9e12c70](https://github.com/oclif/oclif/commit/9e12c70be6c85a9de7fff991e2c2d6574fd6173d))
+- **deps:** bump @oclif/core from 3.26.3 to 3.26.4 ([5cfa494](https://github.com/oclif/oclif/commit/5cfa494f44e0774e94f51f5c292173d60a8923d6))
 
+## [4.8.7](https://github.com/oclif/oclif/compare/4.8.6...4.8.7) (2024-04-21)
 
+### Bug Fixes
 
-## [2.4.3](https://github.com/oclif/oclif/compare/v2.4.2...v2.4.3) (2022-02-01)
+- **deps:** bump @inquirer/confirm from 3.1.4 to 3.1.5 ([0cfc0b0](https://github.com/oclif/oclif/commit/0cfc0b0e81698a1e44b94deaaca436be6d82dbe2))
 
+## [4.8.6](https://github.com/oclif/oclif/compare/4.8.5...4.8.6) (2024-04-21)
 
 ### Bug Fixes
 
-* remove dependency on nps-utils ([#822](https://github.com/oclif/oclif/issues/822)) ([5c01f53](https://github.com/oclif/oclif/commit/5c01f53930ce56a476ba1f8abd1208cbc5b91dc2))
+- **deps:** bump ejs from 3.1.9 to 3.1.10 ([0747157](https://github.com/oclif/oclif/commit/0747157c65e9a88cdd31e96bcd62109df37c67c6))
 
+## [4.8.5](https://github.com/oclif/oclif/compare/4.8.4...4.8.5) (2024-04-15)
 
+### Bug Fixes
 
-## [2.4.2](https://github.com/oclif/oclif/compare/v2.4.1...v2.4.2) (2022-02-01)
+- **deps:** bump @aws-sdk/client-s3 from 3.550.0 to 3.554.0 ([f5bff54](https://github.com/oclif/oclif/commit/f5bff54d426105f43b17da0ded5d638cafaa79e5))
 
+## [4.8.4](https://github.com/oclif/oclif/compare/4.8.3...4.8.4) (2024-04-14)
 
 ### Bug Fixes
 
-* remove IManifest ([#823](https://github.com/oclif/oclif/issues/823)) ([31f1f07](https://github.com/oclif/oclif/commit/31f1f07480d4f59db45da35ff0926bc44665cc6f))
+- **deps:** bump @inquirer/confirm from 3.0.0 to 3.1.4 ([5d5960e](https://github.com/oclif/oclif/commit/5d5960e5fe604868686d2e2e945f4bc4516ee6f7))
 
+## [4.8.3](https://github.com/oclif/oclif/compare/4.8.2...4.8.3) (2024-04-14)
 
+### Bug Fixes
 
-## [2.4.1](https://github.com/oclif/oclif/compare/v2.4.0...v2.4.1) (2022-01-31)
+- **deps:** bump @oclif/plugin-help from 6.0.18 to 6.0.21 ([20fb976](https://github.com/oclif/oclif/commit/20fb9764c7162a6752a32eef50386e7f47155652))
 
+## [4.8.2](https://github.com/oclif/oclif/compare/4.8.1...4.8.2) (2024-04-12)
 
 ### Bug Fixes
 
-* update error messages ([#806](https://github.com/oclif/oclif/issues/806)) ([7a63b49](https://github.com/oclif/oclif/commit/7a63b4987bd8d6e4f2f3211a05248296e5f6d090))
+- reset version on generated cli ([#1369](https://github.com/oclif/oclif/issues/1369)) ([af00332](https://github.com/oclif/oclif/commit/af00332e3075230dda890156e90052d2741a37ef))
 
+## [4.8.1](https://github.com/oclif/oclif/compare/4.8.0...4.8.1) (2024-04-12)
 
+### Bug Fixes
 
-# [2.4.0](https://github.com/oclif/oclif/compare/v2.3.1...v2.4.0) (2022-01-27)
+- supporting paths with spaces whilst running chmod ([#1367](https://github.com/oclif/oclif/issues/1367)) ([#1368](https://github.com/oclif/oclif/issues/1368)) ([06ba5da](https://github.com/oclif/oclif/commit/06ba5da5feab26ba794150e711e487451fc0ede9))
 
+# [4.8.0](https://github.com/oclif/oclif/compare/4.7.8...4.8.0) (2024-04-10)
 
 ### Features
 
-* remove cli-ux ([#804](https://github.com/oclif/oclif/issues/804)) ([fd9d1fb](https://github.com/oclif/oclif/commit/fd9d1fb5672df197c559c6044d51797ad6fe7ffd))
+- add init command ([#1358](https://github.com/oclif/oclif/issues/1358)) ([#1366](https://github.com/oclif/oclif/issues/1366)) ([c1ece19](https://github.com/oclif/oclif/commit/c1ece19daae409c55413297c223a04a044740949))
 
+## [4.7.8](https://github.com/oclif/oclif/compare/4.7.7...4.7.8) (2024-04-09)
 
+### Bug Fixes
 
-## [2.3.1](https://github.com/oclif/oclif/compare/v2.3.0...v2.3.1) (2022-01-27)
+- remove yarn.lock if yarn wasnt selected ([#1365](https://github.com/oclif/oclif/issues/1365)) ([a8d3bfa](https://github.com/oclif/oclif/commit/a8d3bfa51ccedbecf2b320d997bd10accf1d5acc))
 
+## [4.7.7](https://github.com/oclif/oclif/compare/4.7.6...4.7.7) (2024-04-07)
 
 ### Bug Fixes
 
-* remove accidental dep ([8e5435f](https://github.com/oclif/oclif/commit/8e5435fb84febd950be387849f921a76a39f8eb0))
-
+- **deps:** bump @aws-sdk/client-s3 from 3.535.0 to 3.550.0 ([e7427e3](https://github.com/oclif/oclif/commit/e7427e312804b091531e400d98db3764d6e47050))
 
+## [4.7.6](https://github.com/oclif/oclif/compare/4.7.5...4.7.6) (2024-04-04)
 
-# [2.3.0](https://github.com/oclif/oclif/compare/v2.2.0...v2.3.0) (2022-01-20)
-
+## [4.7.5](https://github.com/oclif/oclif/compare/4.7.4...4.7.5) (2024-03-31)
 
-### Features
+### Bug Fixes
 
-* use yeoman-generator v5 ([#797](https://github.com/oclif/oclif/issues/797)) ([37827bf](https://github.com/oclif/oclif/commit/37827bf258ff8145c98a9c621b853ac6b1020fdb))
+- **deps:** bump @oclif/core from 3.25.2 to 3.26.0 ([ccb7808](https://github.com/oclif/oclif/commit/ccb78086e92f1c41aa142206f58e32821c358a7b))
 
+## [4.7.4](https://github.com/oclif/oclif/compare/4.7.3...4.7.4) (2024-03-31)
 
+### Bug Fixes
 
-# [2.2.0](https://github.com/oclif/oclif/compare/v2.1.8...v2.2.0) (2022-01-13)
+- **deps:** bump @inquirer/select from 2.0.0 to 2.2.1 ([80e9611](https://github.com/oclif/oclif/commit/80e96117aec9a95fecc419b6fa5c1d8cd09717b6))
 
+## [4.7.3](https://github.com/oclif/oclif/compare/4.7.2...4.7.3) (2024-03-31)
 
-### Features
+### Bug Fixes
 
-* optionally include tarball path as input ([#764](https://github.com/oclif/oclif/issues/764)) ([#796](https://github.com/oclif/oclif/issues/796)) ([ee6ff99](https://github.com/oclif/oclif/commit/ee6ff99ad5e11cb1abe1de17791a8b987833e381))
+- **deps:** bump @inquirer/input from 2.1.0 to 2.1.1 ([1e9ee41](https://github.com/oclif/oclif/commit/1e9ee41b3076d88ed54b04be663d5e3724ad67df))
 
+## [4.7.2](https://github.com/oclif/oclif/compare/4.7.1...4.7.2) (2024-03-31)
 
+### Bug Fixes
 
-## [2.1.8](https://github.com/oclif/oclif/compare/v2.1.7...v2.1.8) (2022-01-12)
+- **deps:** bump sort-package-json from 2.8.0 to 2.10.0 ([d9f3d17](https://github.com/oclif/oclif/commit/d9f3d17f711910ec61bd4b51c8483b3277811bfa))
 
+## [4.7.1](https://github.com/oclif/oclif/compare/4.7.0...4.7.1) (2024-03-28)
 
 ### Bug Fixes
 
-* remove unnecessary dependency ([#794](https://github.com/oclif/oclif/issues/794)) ([f814f00](https://github.com/oclif/oclif/commit/f814f009b9b203c8917e265c16015a08af911537))
+- doc pretarball in help ([#1348](https://github.com/oclif/oclif/issues/1348)) ([f554696](https://github.com/oclif/oclif/commit/f554696c66fc2adb6d9121be0f52a8b31b2289aa))
 
+# [4.7.0](https://github.com/oclif/oclif/compare/4.6.3...4.7.0) (2024-03-26)
 
+### Features
 
-## [2.1.7](https://github.com/oclif/oclif/compare/v2.1.6...v2.1.7) (2022-01-11)
+- add `pnpm` to the list of supported package managers ([#1340](https://github.com/oclif/oclif/issues/1340)) ([#1346](https://github.com/oclif/oclif/issues/1346)) ([f96fe18](https://github.com/oclif/oclif/commit/f96fe1827020a04ca70392a8aa5ab9affff015c0))
 
+## [4.6.3](https://github.com/oclif/oclif/compare/4.6.2...4.6.3) (2024-03-24)
 
 ### Bug Fixes
 
-* correct package name ([#792](https://github.com/oclif/oclif/issues/792)) ([7197f98](https://github.com/oclif/oclif/commit/7197f98233d4391e4f322d16ff4a0cc92f7a4a6f))
+- **deps:** bump @oclif/plugin-warn-if-update-available ([8a29172](https://github.com/oclif/oclif/commit/8a2917215a51cf6ceac9b7ffe5449e9ff486c99f))
 
+## [4.6.2](https://github.com/oclif/oclif/compare/4.6.1...4.6.2) (2024-03-24)
 
+### Bug Fixes
 
-## [2.1.6](https://github.com/oclif/oclif/compare/v2.1.5...v2.1.6) (2022-01-11)
+- **deps:** bump @inquirer/input from 2.0.0 to 2.1.0 ([75aa6a8](https://github.com/oclif/oclif/commit/75aa6a806a77be51efc3d8ef6766feb79d89b07d))
 
+## [4.6.1](https://github.com/oclif/oclif/compare/4.6.1-dev.1...4.6.1) (2024-03-21)
+
+## [4.6.1-dev.1](https://github.com/oclif/oclif/compare/4.6.1-dev.0...4.6.1-dev.1) (2024-03-21)
 
 ### Bug Fixes
 
-* remove fixpack dependency ([#791](https://github.com/oclif/oclif/issues/791)) ([823300e](https://github.com/oclif/oclif/commit/823300e103bac560fd1e9e8748b33be59a80b066))
+- add oclif script, update readme flag ([cbf5bcc](https://github.com/oclif/oclif/commit/cbf5bccb80ca121066f3c48a0c8066cd23edf307))
+- remove unused yes flag from generate command and generate hook commands ([78a6238](https://github.com/oclif/oclif/commit/78a62385c7151a39b58923163cd7b483b473b89f))
 
+## [4.6.1-dev.0](https://github.com/oclif/oclif/compare/4.6.0...4.6.1-dev.0) (2024-03-20)
 
+### Bug Fixes
 
-## [2.1.5](https://github.com/oclif/oclif/compare/v2.1.4...v2.1.5) (2022-01-10)
+- pass in custom command for readme generation ([63bb314](https://github.com/oclif/oclif/commit/63bb31419b264c85ba8cd940e0e18fefb9d4cf54))
 
+# [4.6.0](https://github.com/oclif/oclif/compare/4.5.7...4.6.0) (2024-03-19)
 
+### Features
 
-## [2.1.4](https://github.com/oclif/oclif/compare/v2.1.3...v2.1.4) (2022-01-10)
+- no yeoman ([#1321](https://github.com/oclif/oclif/issues/1321)) ([30a8a53](https://github.com/oclif/oclif/commit/30a8a53b460b39ca9a3d5f51f81091ed757ba036))
 
+## [4.5.7](https://github.com/oclif/oclif/compare/4.5.6...4.5.7) (2024-03-17)
 
 ### Bug Fixes
 
-* bump cli-ux to 6.0.8 ([46d2d8a](https://github.com/oclif/oclif/commit/46d2d8abaf0ba0b4d076e5ac33fa8ca78a528ed6))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.525.0 to 3.535.0 ([514c4ab](https://github.com/oclif/oclif/commit/514c4ab5fab5c00499179b0348350fb08045755b))
 
+## [4.5.6](https://github.com/oclif/oclif/compare/4.5.5...4.5.6) (2024-03-17)
 
+### Bug Fixes
 
-## [2.1.3](https://github.com/oclif/oclif/compare/v2.1.2...v2.1.3) (2022-01-10)
+- **deps:** bump @aws-sdk/client-s3 from 3.515.0 to 3.535.0 ([69b8209](https://github.com/oclif/oclif/commit/69b820913a85553f50429a2d18629234158cdd5b))
 
+## [4.5.5](https://github.com/oclif/oclif/compare/4.5.4...4.5.5) (2024-03-17)
 
 ### Bug Fixes
 
-* bump deps ([154913b](https://github.com/oclif/oclif/commit/154913bd8db4139b9298d78355f889f20dfb23eb))
+- **deps:** bump @oclif/plugin-help from 6.0.14 to 6.0.18 ([e927d72](https://github.com/oclif/oclif/commit/e927d7274076b125acaf35b3233c5de21ba4a713))
 
+## [4.5.4](https://github.com/oclif/oclif/compare/4.5.3...4.5.4) (2024-03-11)
 
+### Bug Fixes
 
-## [2.1.2](https://github.com/oclif/oclif/compare/v2.1.1...v2.1.2) (2022-01-08)
+- broken links ([#1333](https://github.com/oclif/oclif/issues/1333)) ([3f92e52](https://github.com/oclif/oclif/commit/3f92e520855f7831533049cc3f79eff760835910))
 
+## [4.5.3](https://github.com/oclif/oclif/compare/4.5.2...4.5.3) (2024-03-11)
 
 ### Bug Fixes
 
-* add override for colors ([8bb26b0](https://github.com/oclif/oclif/commit/8bb26b01859165de8759529f8b61ae28cf25b748))
+- **deps:** bump @oclif/plugin-not-found from 3.0.11 to 3.0.14 ([#1330](https://github.com/oclif/oclif/issues/1330)) ([d228797](https://github.com/oclif/oclif/commit/d2287979ddba28d165a50b7706bea55e2c8fbf4b))
 
+## [4.5.2](https://github.com/oclif/oclif/compare/4.5.1...4.5.2) (2024-03-07)
 
+### Bug Fixes
 
-## [2.1.1](https://github.com/oclif/oclif/compare/v2.1.0...v2.1.1) (2022-01-08)
+- force local paths when extracting on win32 ([#1322](https://github.com/oclif/oclif/issues/1322)) ([#1323](https://github.com/oclif/oclif/issues/1323)) ([3a8f37d](https://github.com/oclif/oclif/commit/3a8f37ddb3f905d22dc254ab65fac0795adbd907))
 
+## [4.5.1](https://github.com/oclif/oclif/compare/4.5.0...4.5.1) (2024-03-07)
 
 ### Bug Fixes
 
-* add resolution for colors ([0ea44d4](https://github.com/oclif/oclif/commit/0ea44d45cffdca54c5294a97725a332f94fb69c2))
-
+- handle single command CLI readme ([fae4369](https://github.com/oclif/oclif/commit/fae43696f903d49b9f029dc965efc4ae889a5b8a))
 
+# [4.5.0](https://github.com/oclif/oclif/compare/4.4.21...4.5.0) (2024-03-05)
 
-# [2.1.0](https://github.com/oclif/oclif/compare/v2.0.1...v2.1.0) (2021-12-21)
+### Bug Fixes
 
+- handle non-string oclif.commands ([#1295](https://github.com/oclif/oclif/issues/1295)) ([30f24dd](https://github.com/oclif/oclif/commit/30f24dd1fecd38ce46b45ca57113f8d533db29a2))
+- validate package name and bin ([c0eb1b4](https://github.com/oclif/oclif/commit/c0eb1b4a2d42069ab1f872fe1e3a3a19565d61d4))
 
 ### Features
 
-* add version info to registry for windows installers ([#769](https://github.com/oclif/oclif/issues/769)) ([291603a](https://github.com/oclif/oclif/commit/291603a471757596ebed27b0758bae9871fd53b0))
+- multi subtopic enhancements ([#1320](https://github.com/oclif/oclif/issues/1320)) ([964efaf](https://github.com/oclif/oclif/commit/964efaf1dbc38327696345f3d21b7fae0a515a59))
 
+## [4.4.21](https://github.com/oclif/oclif/compare/4.4.20...4.4.21) (2024-03-04)
 
+### Bug Fixes
 
-## [2.0.1](https://github.com/oclif/oclif/compare/v2.0.0-main.19...v2.0.1) (2021-12-08)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.511.0 to 3.525.0 ([747ccf7](https://github.com/oclif/oclif/commit/747ccf700056a56b47137842bd99bba07d477a5d))
 
+## [4.4.20](https://github.com/oclif/oclif/compare/4.4.19...4.4.20) (2024-03-03)
 
+### Bug Fixes
 
-# [2.0.0-main.19](https://github.com/oclif/oclif/compare/v2.0.0-main.18...v2.0.0-main.19) (2021-12-08)
+- **deps:** bump @oclif/plugin-help from 6.0.12 to 6.0.14 ([16a24c3](https://github.com/oclif/oclif/commit/16a24c35aabe99d48a6126fcd0ee93cd491b0663))
 
+## [4.4.19](https://github.com/oclif/oclif/compare/4.4.18...4.4.19) (2024-02-26)
 
 ### Bug Fixes
 
-* bump deps ([#750](https://github.com/oclif/oclif/issues/750)) ([ffb9b99](https://github.com/oclif/oclif/commit/ffb9b99ba2f53a9049f04d0dfea1a4b4b427dfe0))
+- compilation errors ([a1c4b11](https://github.com/oclif/oclif/commit/a1c4b11ce68991abdddbfe6bea3ff6c691b52887))
+- sort generated package.json ([c5c0d0c](https://github.com/oclif/oclif/commit/c5c0d0c23b539cf66b635ccbd72e6f050a5930f0))
 
+## [4.4.18](https://github.com/oclif/oclif/compare/4.4.17...4.4.18) (2024-02-25)
 
+### Bug Fixes
 
-# [2.0.0-main.18](https://github.com/oclif/oclif/compare/v2.0.0-main.17...v2.0.0-main.18) (2021-12-08)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([51a5277](https://github.com/oclif/oclif/commit/51a52776c9b1b143d364d6e9ca72952aec54d92c))
 
+## [4.4.17](https://github.com/oclif/oclif/compare/4.4.16...4.4.17) (2024-02-21)
 
+### Bug Fixes
 
-# [2.0.0-main.17](https://github.com/oclif/oclif/compare/v2.0.0-main.16...v2.0.0-main.17) (2021-12-08)
+- **deps:** bump ip from 2.0.0 to 2.0.1 ([9dd712a](https://github.com/oclif/oclif/commit/9dd712a3b9a1ee483277ba2b3b5f0bd31cde6e71))
 
+## [4.4.16](https://github.com/oclif/oclif/compare/4.4.15...4.4.16) (2024-02-19)
 
+### Bug Fixes
 
-# [2.0.0-main.16](https://github.com/oclif/oclif/compare/v2.0.0-main.15...v2.0.0-main.16) (2021-12-08)
+- **deps:** bump @oclif/core from 3.19.1 to 3.19.2 ([ff48955](https://github.com/oclif/oclif/commit/ff48955ab8550eee06b6e24c3a456708fc6b4ced))
 
+## [4.4.15](https://github.com/oclif/oclif/compare/4.4.14...4.4.15) (2024-02-18)
 
+### Bug Fixes
 
-# [2.0.0-main.15](https://github.com/oclif/oclif/compare/v2.0.0-main.14...v2.0.0-main.15) (2021-12-08)
+- **deps:** bump semver and @types/semver ([98b48e0](https://github.com/oclif/oclif/commit/98b48e0aab99f334da9645133dbd76cf918420c6))
 
+## [4.4.14](https://github.com/oclif/oclif/compare/4.4.13...4.4.14) (2024-02-18)
 
+### Bug Fixes
 
-# [2.0.0-main.14](https://github.com/oclif/oclif/compare/v2.0.0-main.13...v2.0.0-main.14) (2021-12-07)
+- **deps:** bump @aws-sdk/client-s3 from 3.504.0 to 3.515.0 ([399ca95](https://github.com/oclif/oclif/commit/399ca95e5e548b71e13481e820a403daba3dff28))
 
+## [4.4.13](https://github.com/oclif/oclif/compare/4.4.12...4.4.13) (2024-02-18)
 
 ### Bug Fixes
 
-* bump deps ([#748](https://github.com/oclif/oclif/issues/748)) ([18a42ba](https://github.com/oclif/oclif/commit/18a42ba62dbd165d4ea10f04b755afcf23260b54))
+- **deps:** bump @oclif/plugin-warn-if-update-available ([888fe62](https://github.com/oclif/oclif/commit/888fe622cbe0546545aba1122178f59410e66b90))
 
+## [4.4.12](https://github.com/oclif/oclif/compare/4.4.11...4.4.12) (2024-02-15)
 
+### Bug Fixes
 
-# [2.0.0-main.13](https://github.com/oclif/oclif/compare/v2.0.0-main.12...v2.0.0-main.13) (2021-12-07)
+- respect tsconfig outDir when generating hook ([#1293](https://github.com/oclif/oclif/issues/1293)) ([dcca71a](https://github.com/oclif/oclif/commit/dcca71a226fd54e63f822740404564ed34326574))
 
+## [4.4.11](https://github.com/oclif/oclif/compare/4.4.10...4.4.11) (2024-02-12)
 
 ### Bug Fixes
 
-* bump deps ([#747](https://github.com/oclif/oclif/issues/747)) ([6f61f96](https://github.com/oclif/oclif/commit/6f61f96f123159cb0a9023063c8a949b3fd85a7f))
+- **deps:** bump @aws-sdk/client-cloudfront from 3.504.0 to 3.511.0 ([494afde](https://github.com/oclif/oclif/commit/494afde735836d374968e1423d85b9e3ca4d7367))
 
+## [4.4.10](https://github.com/oclif/oclif/compare/4.4.9...4.4.10) (2024-02-11)
 
+### Bug Fixes
 
-# [2.0.0-main.12](https://github.com/oclif/oclif/compare/v2.0.0-main.11...v2.0.0-main.12) (2021-12-06)
+- **deps:** bump @oclif/plugin-not-found from 3.0.9 to 3.0.10 ([fb86b55](https://github.com/oclif/oclif/commit/fb86b5518f2a58e5f852a054088db30855452037))
 
+## [4.4.9](https://github.com/oclif/oclif/compare/4.4.8...4.4.9) (2024-02-11)
 
 ### Bug Fixes
 
-* bump deps ([#735](https://github.com/oclif/oclif/issues/735)) ([e01c9a7](https://github.com/oclif/oclif/commit/e01c9a7ecf5635309eeca694532b9fa6c9b8bb0d))
+- **deps:** bump @oclif/core from 3.18.2 to 3.19.1 ([cdfb793](https://github.com/oclif/oclif/commit/cdfb7933d661a4db77670a7228bf238e926fa60d))
 
+## [4.4.8](https://github.com/oclif/oclif/compare/4.4.7...4.4.8) (2024-02-09)
 
+### Bug Fixes
 
-# [2.0.0-main.11](https://github.com/oclif/oclif/compare/v2.0.0-main.10...v2.0.0-main.11) (2021-12-01)
+- make eslint plugin a dev dependency ([#1262](https://github.com/oclif/oclif/issues/1262)) ([319c4f0](https://github.com/oclif/oclif/commit/319c4f056b4a1e564b6e573e13bf034cb38dca91))
 
+## [4.4.7](https://github.com/oclif/oclif/compare/4.4.6...4.4.7) (2024-02-06)
 
 ### Bug Fixes
 
-* force main build to fix v1 tag/version ([140b581](https://github.com/oclif/oclif/commit/140b5811f018f56e3e26037402887415801f682a))
+- update logic for exclusion from Windows Defender scans ([#1276](https://github.com/oclif/oclif/issues/1276)) ([09a4409](https://github.com/oclif/oclif/commit/09a440924b1689f63481811d5f88509bf6896610))
 
+## [4.4.6](https://github.com/oclif/oclif/compare/4.4.5...4.4.6) (2024-02-05)
 
+### Bug Fixes
 
-# [2.0.0-main.10](https://github.com/oclif/oclif/compare/v2.0.0-main.9...v2.0.0-main.10) (2021-11-17)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.501.0 to 3.504.0 ([#1277](https://github.com/oclif/oclif/issues/1277)) ([47dd2c9](https://github.com/oclif/oclif/commit/47dd2c9758f1e361b79b5df1e73ecaa55d26e612))
 
+## [4.4.5](https://github.com/oclif/oclif/compare/4.4.4...4.4.5) (2024-02-05)
 
-### Features
+## [4.4.4](https://github.com/oclif/oclif/compare/4.4.3...4.4.4) (2024-02-04)
 
-* support darwin-arm tarballs ([#711](https://github.com/oclif/oclif/issues/711)) ([61cb766](https://github.com/oclif/oclif/commit/61cb7664ce38f1b7827ff652f063c3be7adeb1af))
+### Bug Fixes
 
+- **deps:** bump @aws-sdk/client-s3 from 3.496.0 to 3.504.0 ([244f5a4](https://github.com/oclif/oclif/commit/244f5a487054facc630010ed8ca0285a09fe622d))
 
+## [4.4.3](https://github.com/oclif/oclif/compare/4.4.2...4.4.3) (2024-02-04)
 
-# [2.0.0-main.9](https://github.com/oclif/oclif/compare/v2.0.0-main.8...v2.0.0-main.9) (2021-11-04)
+### Bug Fixes
 
+- **deps:** bump @oclif/core from 3.18.1 to 3.18.2 ([f848a97](https://github.com/oclif/oclif/commit/f848a97ebb498b15f62398e94ffd79aab771440b))
 
+## [4.4.2](https://github.com/oclif/oclif/compare/4.4.1...4.4.2) (2024-01-28)
 
-# [2.0.0-main.8](https://github.com/oclif/oclif/compare/v2.0.0-main.7...v2.0.0-main.8) (2021-10-08)
+### Bug Fixes
 
+- **deps:** bump @aws-sdk/client-cloudfront from 3.496.0 to 3.501.0 ([b1147bc](https://github.com/oclif/oclif/commit/b1147bceec52c6dbf0223c43f5c99a8bf0366b5d))
 
+## [4.4.1](https://github.com/oclif/oclif/compare/4.4.0...4.4.1) (2024-01-28)
 
-# [2.0.0-main.7](https://github.com/oclif/oclif/compare/v2.0.0-main.6...v2.0.0-main.7) (2021-10-08)
+### Bug Fixes
 
+- **deps:** bump @oclif/plugin-help from 6.0.9 to 6.0.12 ([594ed0f](https://github.com/oclif/oclif/commit/594ed0f8aab0e5d1ff4df2584777db06b5a45794))
 
+# [4.4.0](https://github.com/oclif/oclif/compare/4.3.10...4.4.0) (2024-01-26)
 
-# [2.0.0-main.6](https://github.com/oclif/oclif/compare/v2.0.0-main.5...v2.0.0-main.6) (2021-10-05)
+### Features
 
+- deprecate and hide lock command ([053e877](https://github.com/oclif/oclif/commit/053e877b3c0f732a282412cc62f5bcc100ea07df))
+
+## [4.3.10](https://github.com/oclif/oclif/compare/4.3.9...4.3.10) (2024-01-25)
 
 ### Bug Fixes
 
-* bump oclif/core to 1.0.0 ([#687](https://github.com/oclif/oclif/issues/687)) [skip-validate-pr] ([430bb19](https://github.com/oclif/oclif/commit/430bb19068133f3622f660f614e3fa69009cb73c))
+- correct S3 key generation for /apt/./ During deb artifacts promotion ([#1265](https://github.com/oclif/oclif/issues/1265)) ([#1266](https://github.com/oclif/oclif/issues/1266)) ([#1267](https://github.com/oclif/oclif/issues/1267)) ([8007a1c](https://github.com/oclif/oclif/commit/8007a1c591ea8a0dd20212d69f3e945f6109741e))
 
+## [4.3.9](https://github.com/oclif/oclif/compare/4.3.8...4.3.9) (2024-01-22)
 
-### Features
+### Bug Fixes
 
-* add generate cmd ([#665](https://github.com/oclif/oclif/issues/665)) ([731ed49](https://github.com/oclif/oclif/commit/731ed490bc3bc1857d414dfd56d0d8dfd7b6be2b))
-* unhide releasing related cmds ([#670](https://github.com/oclif/oclif/issues/670)) ([25ace5f](https://github.com/oclif/oclif/commit/25ace5f0641cbda3bf8ee0c204be8e6a47f187c6))
+- **deps:** bump @oclif/plugin-not-found from 3.0.8 to 3.0.9 ([7db473a](https://github.com/oclif/oclif/commit/7db473ab4202c9a921b9d7b55ed75af096f1199c))
 
+## [4.3.8](https://github.com/oclif/oclif/compare/4.3.7...4.3.8) (2024-01-21)
 
+### Bug Fixes
 
-# [2.0.0-main.5](https://github.com/oclif/oclif/compare/v2.0.0-main.4...v2.0.0-main.5) (2021-09-20)
+- **deps:** bump @aws-sdk/client-cloudfront from 3.484.0 to 3.496.0 ([a21bd3f](https://github.com/oclif/oclif/commit/a21bd3fee9e203ec645b641f2854b9c32a31884c))
 
+## [4.3.7](https://github.com/oclif/oclif/compare/4.3.6...4.3.7) (2024-01-21)
 
+### Bug Fixes
 
-# [2.0.0-main.4](https://github.com/oclif/oclif/compare/v2.0.0-main.3...v2.0.0-main.4) (2021-09-20)
+- **deps:** bump @aws-sdk/client-s3 from 3.490.0 to 3.496.0 ([ede210f](https://github.com/oclif/oclif/commit/ede210fe70593adf17fb298812b9501f15328be3))
 
+## [4.3.6](https://github.com/oclif/oclif/compare/4.3.5...4.3.6) (2024-01-18)
 
+### Bug Fixes
 
-# [2.0.0-main.3](https://github.com/oclif/oclif/compare/v2.0.0-main.2...v2.0.0-main.3) (2021-09-16)
+- copy .yarn/plugins directory ([#1255](https://github.com/oclif/oclif/issues/1255)) ([aa927e2](https://github.com/oclif/oclif/commit/aa927e295104b7316c8b0314918ae0426a4c2bb7))
 
+## [4.3.5](https://github.com/oclif/oclif/compare/4.3.4...4.3.5) (2024-01-17)
 
 ### Bug Fixes
 
-* use summary field if available ([#667](https://github.com/oclif/oclif/issues/667)) ([60db19f](https://github.com/oclif/oclif/commit/60db19f89b44d451cfd6579f982b6545dec49ee6))
+- use JSON.parse ([3d5a5a9](https://github.com/oclif/oclif/commit/3d5a5a9ec24af1d56e5a3653c905db22a5c1cdb9))
+- use transformToString ([140ef90](https://github.com/oclif/oclif/commit/140ef909bc0b7a7137d2a5567025dc7ec889900c))
 
+## [4.3.4](https://github.com/oclif/oclif/compare/4.3.3...4.3.4) (2024-01-15)
 
+### Bug Fixes
 
-# [2.0.0-main.2](https://github.com/oclif/oclif/compare/v2.0.0-2.0...v2.0.0-main.2) (2021-08-30)
+- **deps:** bump @oclif/core from 3.16.0 to 3.18.1 ([3414265](https://github.com/oclif/oclif/commit/3414265dc1887cde8a922e4fe8d03c4c2c0c18dc))
 
+## [4.3.3](https://github.com/oclif/oclif/compare/4.3.2...4.3.3) (2024-01-14)
 
 ### Bug Fixes
 
-* force build to pickup latest oclif/core ([#648](https://github.com/oclif/oclif/issues/648)) ([4ed1e9a](https://github.com/oclif/oclif/commit/4ed1e9a568a88ef37b51b95f66419cf52e16a3b7))
-* remove context var ([#652](https://github.com/oclif/oclif/issues/652)) ([d8f12fa](https://github.com/oclif/oclif/commit/d8f12faa82566b562cd2c658013a6722e38872fc))
+- **deps:** bump @aws-sdk/client-s3 from 3.484.0 to 3.490.0 ([7b7a349](https://github.com/oclif/oclif/commit/7b7a349df7528e8e7a83529df01d26282096e6f1))
 
+## [4.3.2](https://github.com/oclif/oclif/compare/4.3.1...4.3.2) (2024-01-14)
 
+### Bug Fixes
 
-# [2.0.0-main.1](https://github.com/oclif/oclif/compare/v2.0.0-main.0...v2.0.0-main.1) (2021-07-08)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([6ec4e6e](https://github.com/oclif/oclif/commit/6ec4e6e0ae63768657af09783f931ee38293ed8e))
 
+## [4.3.1](https://github.com/oclif/oclif/compare/4.3.0...4.3.1) (2024-01-10)
 
 ### Bug Fixes
 
-* throw error if WINDOWS_SIGNING_PASS is not set ([0dc68b0](https://github.com/oclif/oclif/commit/0dc68b09fd7f52719d45440e4faf85782ced9680))
+- **deps:** bump @oclif/plugin-not-found from 3.0.7 to 3.0.8 ([#1242](https://github.com/oclif/oclif/issues/1242)) ([6072880](https://github.com/oclif/oclif/commit/6072880730a7bda2c46b2b65a1feb59f8ead94a7))
 
+# [4.3.0](https://github.com/oclif/oclif/compare/4.2.0...4.3.0) (2024-01-10)
 
+### Features
 
-# [2.0.0-main.0](https://github.com/oclif/oclif/compare/v2.0.0-v2.0...v2.0.0-main.0) (2021-07-08)
+- option to specify compression used for pack:deb ([#1110](https://github.com/oclif/oclif/issues/1110)) ([#1241](https://github.com/oclif/oclif/issues/1241)) ([03619e4](https://github.com/oclif/oclif/commit/03619e4c3cda8c0fe738be641c466f1e196012f8)), closes [heroku/cli#2240](https://github.com/heroku/cli/issues/2240)
+- upgrade to use aws api v3 ([#1215](https://github.com/oclif/oclif/issues/1215)) ([#1240](https://github.com/oclif/oclif/issues/1240)) ([e781906](https://github.com/oclif/oclif/commit/e78190655ba7de9101794aa03b25ad2ffe65e2c3))
 
+# [4.2.0](https://github.com/oclif/oclif/compare/4.1.4...4.2.0) (2024-01-09)
 
-### Bug Fixes
+### Features
 
-* change npm tag ([9d07724](https://github.com/oclif/oclif/commit/9d07724cd8b4a200bb6212425311cca2029fa752))
-* prerelease name ([084e890](https://github.com/oclif/oclif/commit/084e8909ea93300a86bf6ddf6319b87a0d3ee5b1))
+- add node.options ([#1238](https://github.com/oclif/oclif/issues/1238)) ([#1239](https://github.com/oclif/oclif/issues/1239)) ([7e0c713](https://github.com/oclif/oclif/commit/7e0c7138feb112740295b823c62eed0773c933eb))
 
+## [4.1.4](https://github.com/oclif/oclif/compare/4.1.3...4.1.4) (2024-01-08)
 
+### Bug Fixes
 
-# [2.0.0-v2.0](https://github.com/oclif/oclif/compare/v1.18.1...v2.0.0-v2.0) (2021-07-08)
+- outdir regex in readme ([#1236](https://github.com/oclif/oclif/issues/1236)) ([c804d80](https://github.com/oclif/oclif/commit/c804d80427aaf79018d21afeaece25c240fcf58d))
 
+## [4.1.3](https://github.com/oclif/oclif/compare/4.1.2...4.1.3) (2024-01-04)
 
 ### Bug Fixes
 
-* use @oclif/core for readme/manifest ([#607](https://github.com/oclif/oclif/issues/607)) ([15ade45](https://github.com/oclif/oclif/commit/15ade4596e4888c2e343d81331132e4ded494338))
+- incorrect windows commandPath ([#1234](https://github.com/oclif/oclif/issues/1234)) ([251f20c](https://github.com/oclif/oclif/commit/251f20c543944c713807e3dea97e8faf25436399))
 
+## [4.1.2](https://github.com/oclif/oclif/compare/4.1.1...4.1.2) (2024-01-03)
 
+### Bug Fixes
 
-## [1.18.1](https://github.com/oclif/oclif/compare/v1.18.0...v1.18.1) (2021-07-01)
+- bump oclif deps ([#1231](https://github.com/oclif/oclif/issues/1231)) ([6cec405](https://github.com/oclif/oclif/commit/6cec405c61bc1afd848235911b111e8485300a6c))
 
+## [4.1.1](https://github.com/oclif/oclif/compare/4.1.0...4.1.1) (2024-01-02)
 
 ### Bug Fixes
 
-* add setup_git script ([35d0920](https://github.com/oclif/oclif/commit/35d0920eae2958d7e9ae394523f06b1f034396ad))
-* move pretarball step ([#617](https://github.com/oclif/oclif/issues/617)) ([cd74340](https://github.com/oclif/oclif/commit/cd743408e5a8fd3e4f7e6effd6ec91adbe1121d4))
-* update config.yml ([97b630c](https://github.com/oclif/oclif/commit/97b630c2d1ac36b1975057fbc18caa420f828981))
-* update release job ([eb05cd5](https://github.com/oclif/oclif/commit/eb05cd5511dfac27617e916aa0415cdb5647f11e))
+- missing core yarn files ([#1229](https://github.com/oclif/oclif/issues/1229)) ([#1230](https://github.com/oclif/oclif/issues/1230)) ([9efd810](https://github.com/oclif/oclif/commit/9efd8106592ffe5243a93357dfcb4f395c1b6a4a))
 
+# [4.1.0](https://github.com/oclif/oclif/compare/4.0.4...4.1.0) (2023-12-14)
 
+### Features
 
-# [1.18.0](https://github.com/oclif/oclif/compare/v1.17.1...v1.18.0) (2021-05-26)
+- configurable readme path ([#1220](https://github.com/oclif/oclif/issues/1220)) ([#1221](https://github.com/oclif/oclif/issues/1221)) ([7155087](https://github.com/oclif/oclif/commit/7155087d33373237f1d3c9a4415d98fb732929b1))
 
+## [4.0.4](https://github.com/oclif/oclif/compare/4.0.3...4.0.4) (2023-11-20)
 
-### Features
+### Bug Fixes
 
-* option to produce sorted index files on version promote ([67e1bae](https://github.com/oclif/oclif/commit/67e1baeeeecc45827feab88af30694d614cc8ce8))
+- build-time and install-time options for windows defender ([#1210](https://github.com/oclif/oclif/issues/1210)) ([be3d216](https://github.com/oclif/oclif/commit/be3d216cf3e5a566748e8937479e15545934e362))
 
+## [4.0.3](https://github.com/oclif/oclif/compare/4.0.2...4.0.3) (2023-10-17)
 
+### Bug Fixes
 
-## [1.17.1](https://github.com/oclif/oclif/compare/v1.17.0...v1.17.1) (2021-05-18)
+- bump plugin-warn-if-update ([06779a2](https://github.com/oclif/oclif/commit/06779a2b73915aa484327e3697864d17faa7bde6))
 
+## [4.0.2](https://github.com/oclif/oclif/compare/4.0.1...4.0.2) (2023-10-11)
 
 ### Bug Fixes
 
-* respect cache on promote ([#578](https://github.com/oclif/oclif/issues/578)) ([8ddd596](https://github.com/oclif/oclif/commit/8ddd596f27586d69876416e4fec6b4ef4cf9740b))
+- remove `concurrently` dep ([#1201](https://github.com/oclif/oclif/issues/1201)) ([ba1f888](https://github.com/oclif/oclif/commit/ba1f888cc464967e8bb7aeed466d06eb909661a8))
 
+## [4.0.1](https://github.com/oclif/oclif/compare/4.0.0...4.0.1) (2023-10-10)
 
+### Bug Fixes
 
-# [1.17.0](https://github.com/oclif/oclif/compare/v1.16.2...v1.17.0) (2021-03-15)
+- bump eslint-config-oclif-typescript ([#1200](https://github.com/oclif/oclif/issues/1200)) ([c8fbe41](https://github.com/oclif/oclif/commit/c8fbe4194ac0d38bf706b97ef8cfcbbcb7560936))
 
+# [4.0.0](https://github.com/oclif/oclif/compare/3.17.2...4.0.0) (2023-10-06)
 
-### Features
+## [3.17.2](https://github.com/oclif/oclif/compare/3.17.1...3.17.2) (2023-09-28)
 
-* add pretarball hook ([#531](https://github.com/oclif/oclif/issues/531)) ([202dfbd](https://github.com/oclif/oclif/commit/202dfbd90a12ccf9ced368cf218799761cfe2813))
+### Bug Fixes
 
+- dont assume lib as outDir ([44bd3fd](https://github.com/oclif/oclif/commit/44bd3fd1c8f8d843acfed5fcb05d78a07ed26761))
+- respect commands dir of each plugin, check for typescript in deps ([993733b](https://github.com/oclif/oclif/commit/993733bbef2852502f8f6c4154dbda08a1cacec9))
+- use path.sep ([9770d1d](https://github.com/oclif/oclif/commit/9770d1dba2e0cd66fc99837890b64501f97d9a98))
 
+## [3.17.1](https://github.com/oclif/oclif/compare/3.17.0...3.17.1) (2023-09-21)
 
-## [1.16.2](https://github.com/oclif/oclif/compare/v1.16.1...v1.16.2) (2021-03-11)
+### Bug Fixes
 
+- extract gz not xz ([808ec8b](https://github.com/oclif/oclif/commit/808ec8beba9d8084612eb61413b63a1c5e34b802))
 
+# [3.17.0](https://github.com/oclif/oclif/compare/3.16.0...3.17.0) (2023-09-21)
 
-## [1.16.1](https://github.com/oclif/oclif/compare/v1.16.0...v1.16.1) (2020-05-07)
+### Features
 
+- improve perf of manifest command ([#1187](https://github.com/oclif/oclif/issues/1187)) ([e7123cf](https://github.com/oclif/oclif/commit/e7123cf7be377da524468704047db1d3c6da88c8))
 
-### Bug Fixes
+# [3.16.0](https://github.com/oclif/oclif/compare/3.15.1...3.16.0) (2023-09-13)
 
-* short circuit with nullish coalescing operator ([#327](https://github.com/oclif/oclif/issues/327)) ([de8a7a0](https://github.com/oclif/oclif/commit/de8a7a0cb633cc9bfd34a6eff5374cda24344df8))
+### Features
 
+- adds version and repo-prefix flags ([4ba8246](https://github.com/oclif/oclif/commit/4ba8246be9dfcc330543bfb211af8f65cd6ee512))
 
+## [3.15.1](https://github.com/oclif/oclif/compare/3.15.0...3.15.1) (2023-09-11)
 
-# [1.16.0](https://github.com/oclif/oclif/compare/v1.15.2...v1.16.0) (2020-05-07)
+# [3.15.0](https://github.com/oclif/oclif/compare/3.14.0...3.15.0) (2023-09-05)
 
+### Features
+
+- add 'target' argument when packing/uploading windows ([#1181](https://github.com/oclif/oclif/issues/1181)) ([#1183](https://github.com/oclif/oclif/issues/1183)) ([6b9999e](https://github.com/oclif/oclif/commit/6b9999e144003a20e1a643452729ec2c4eee7156))
+
+# [3.14.0](https://github.com/oclif/oclif/compare/3.13.1...3.14.0) (2023-09-01)
 
 ### Features
 
-* create clis with plugin-help v3 ([#343](https://github.com/oclif/oclif/issues/343)) ([a580350](https://github.com/oclif/oclif/commit/a580350a3988f3ebaa76c16180c0afe7fabdc763))
+- add lock command ([#1178](https://github.com/oclif/oclif/issues/1178)) ([6c0e7d6](https://github.com/oclif/oclif/commit/6c0e7d6938ecd9bdc4a6092f630435b7e125433d))
 
+## [3.13.1](https://github.com/oclif/oclif/compare/3.13.0...3.13.1) (2023-08-31)
 
+### Reverts
 
-## [1.15.2](https://github.com/oclif/oclif/compare/v1.15.1...v1.15.2) (2019-12-16)
+- Revert "feat: remove OCLIF_ALLOW_ESM env var (#1171)" (#1179) ([5472380](https://github.com/oclif/oclif/commit/5472380a5bc968b6677891dde78af058c8c1e6e2)), closes [#1171](https://github.com/oclif/oclif/issues/1171) [#1179](https://github.com/oclif/oclif/issues/1179)
 
+# [3.13.0](https://github.com/oclif/oclif/compare/3.12.0...3.13.0) (2023-08-31)
 
-### Bug Fixes
+### Features
 
-* include dev-cli in single cli generation & run readme ([#296](https://github.com/oclif/oclif/issues/296)) ([fcef7c9](https://github.com/oclif/oclif/commit/fcef7c9def2aeceef603cea2441c5a4e6bbc8972))
+- remove OCLIF_ALLOW_ESM env var ([#1171](https://github.com/oclif/oclif/issues/1171)) ([3100bc8](https://github.com/oclif/oclif/commit/3100bc87cfd50f815de8748e7085c087abcc9463))
 
+# [3.12.0](https://github.com/oclif/oclif/compare/3.11.3...3.12.0) (2023-08-28)
 
+### Features
 
-## [1.15.1](https://github.com/oclif/oclif/compare/v1.15.0...v1.15.1) (2019-11-19)
+- add a timestamp authority to win:pack ([#1174](https://github.com/oclif/oclif/issues/1174)) ([0040927](https://github.com/oclif/oclif/commit/0040927e8e17e4cf874967d299b359910a1c0ebd))
 
+## [3.11.3](https://github.com/oclif/oclif/compare/3.11.2...3.11.3) (2023-08-07)
 
 ### Bug Fixes
 
-* nps build step in release ([#306](https://github.com/oclif/oclif/issues/306)) ([1fbf44b](https://github.com/oclif/oclif/commit/1fbf44b15b40adad6c4a61f7d62fff8c4f85fc0a))
+- hide module type prompt behind OCLIF_ALLOW_ESM env var ([#1167](https://github.com/oclif/oclif/issues/1167)) ([31a19ca](https://github.com/oclif/oclif/commit/31a19ca2ec988b3a036dafe903e2527a96bd79a4))
 
+## [3.11.2](https://github.com/oclif/oclif/compare/3.11.1...3.11.2) (2023-08-04)
 
+### Bug Fixes
 
-# [1.15.0](https://github.com/oclif/oclif/compare/v1.14.2...v1.15.0) (2019-11-19)
+- respect topic sep when generating readme ([#1165](https://github.com/oclif/oclif/issues/1165)) ([4755882](https://github.com/oclif/oclif/commit/47558825861c0d9dbee40ac76f5adce7dca859b4))
 
+## [3.11.1](https://github.com/oclif/oclif/compare/3.11.0...3.11.1) (2023-08-01)
 
 ### Bug Fixes
 
-* only use yarn in circle config if selected as option ([#298](https://github.com/oclif/oclif/issues/298)) ([9914b56](https://github.com/oclif/oclif/commit/9914b56bf16bfcdb5e1b4939bf8502652bacfabb))
+- remove yosay dependency ([#1163](https://github.com/oclif/oclif/issues/1163)) ([5660538](https://github.com/oclif/oclif/commit/5660538798a2d9dd621215b9d447f95a2adf94f1))
 
+# [3.11.0](https://github.com/oclif/oclif/compare/3.10.0...3.11.0) (2023-07-31)
 
 ### Features
 
-* remove tslint and default to eslint ([#305](https://github.com/oclif/oclif/issues/305)) ([9b188d9](https://github.com/oclif/oclif/commit/9b188d9b87d0218ed8704db4452b9bf5eb3a39e8))
-
+- add esm option to generate ([#1160](https://github.com/oclif/oclif/issues/1160)) ([a8f1885](https://github.com/oclif/oclif/commit/a8f18855468fb29921da2281a786c54224c7be6c))
 
+# [3.10.0](https://github.com/oclif/oclif/compare/3.9.2...3.10.0) (2023-07-21)
 
-## [1.14.2](https://github.com/oclif/oclif/compare/v1.14.1...v1.14.2) (2019-10-25)
-
+### Features
 
-### Bug Fixes
+- Add support for linux arm64, debian architectures ([7ca9e6e](https://github.com/oclif/oclif/commit/7ca9e6e67695191e197c916a71df58d09a3cac99))
 
-* bump nyc version in generator ([#295](https://github.com/oclif/oclif/issues/295)) ([5fdf1b0](https://github.com/oclif/oclif/commit/5fdf1b0d622d8662d7cd33f975c1730e549e33b2))
+## [3.9.2](https://github.com/oclif/oclif/compare/3.9.2-dev.0...3.9.2) (2023-07-20)
 
+## [3.9.2-dev.0](https://github.com/oclif/oclif/compare/3.9.1...3.9.2-dev.0) (2023-07-20)
 
+### Bug Fixes
 
-## [1.14.1](https://github.com/oclif/oclif/compare/v1.14.0...v1.14.1) (2019-10-22)
+- ignore install scripts when building JIT plugin manifests ([ce725a2](https://github.com/oclif/oclif/commit/ce725a203c1f80ea2c36188efcf5a85ce22ea07a))
 
+## [3.9.1](https://github.com/oclif/oclif/compare/3.9.0...3.9.1) (2023-06-12)
 
 ### Bug Fixes
 
-* update oclif deps ([fec3106](https://github.com/oclif/oclif/commit/fec3106ba1fbd4c37fcc5dc97472c9ada549a014))
+- add yarn 1/3 support ([#1149](https://github.com/oclif/oclif/issues/1149)) ([4d4a96b](https://github.com/oclif/oclif/commit/4d4a96bbd65f65d124db5dbb7ee278109ea89238))
 
+# [3.9.0](https://github.com/oclif/oclif/compare/3.8.2...3.9.0) (2023-05-02)
 
+### Features
 
-# [1.14.0](https://github.com/oclif/oclif/compare/v1.13.6...v1.14.0) (2019-10-07)
+- add additional nsis scripting expansion ([#1142](https://github.com/oclif/oclif/issues/1142)) ([1760c01](https://github.com/oclif/oclif/commit/1760c01ad644f314d447aa47a337b9df24fc12de))
 
+## [3.8.2](https://github.com/oclif/oclif/compare/3.8.1...3.8.2) (2023-04-28)
 
+### Bug Fixes
 
-## [1.13.6](https://github.com/oclif/oclif/compare/v1.13.5...v1.13.6) (2019-08-28)
+- **deps:** bump yeoman, remove unused dev-deps ([8c04440](https://github.com/oclif/oclif/commit/8c04440fd62c964f55ce93a0971a4875cf0a8ebc))
 
+## [3.8.1](https://github.com/oclif/oclif/compare/3.8.0...3.8.1) (2023-04-14)
 
 ### Bug Fixes
 
-* update README Requirements ([f2bd11e](https://github.com/oclif/oclif/commit/f2bd11ee7d05f4eb3714a6a928c48040af1a4d51))
+- **promote:deb:** skip i386 deb pkg if node < 10 ([#1140](https://github.com/oclif/oclif/issues/1140)) ([dd50d78](https://github.com/oclif/oclif/commit/dd50d78ed486e37209789a201e60b35679a7ffdf))
 
+# [3.8.0](https://github.com/oclif/oclif/compare/3.7.3...3.8.0) (2023-04-12)
 
+### Features
 
-## [1.13.5](https://github.com/oclif/oclif/compare/v1.13.4...v1.13.5) (2019-07-12)
+- binAliases (support for multiple bin for the same CLI) for all OS ([a9ee96e](https://github.com/oclif/oclif/commit/a9ee96e7cd954a1a33db595e8be22e91070e8a93))
 
+## [3.7.3](https://github.com/oclif/oclif/compare/3.7.2...3.7.3) (2023-03-28)
 
 ### Bug Fixes
 
-* update globby ([#259](https://github.com/oclif/oclif/issues/259)) ([468985e](https://github.com/oclif/oclif/commit/468985edca04831900a69b1bb48498e92b3dc889))
+- reapply is manifest writing ([#1130](https://github.com/oclif/oclif/issues/1130)) ([d0365e5](https://github.com/oclif/oclif/commit/d0365e51aadb565951aabc17562633ad1eb0fcbd)), closes [#1127](https://github.com/oclif/oclif/issues/1127)
 
+## [3.7.2](https://github.com/oclif/oclif/compare/3.7.1...3.7.2) (2023-03-22)
 
+### Bug Fixes
 
-## [1.13.4](https://github.com/oclif/oclif/compare/v1.13.3...v1.13.4) (2019-06-20)
+- bump oclif core ([#1127](https://github.com/oclif/oclif/issues/1127)) ([03cbaab](https://github.com/oclif/oclif/commit/03cbaab6a4c39084581ef3f718249969ced6465f))
 
+## [3.7.1](https://github.com/oclif/oclif/compare/3.7.0...3.7.1) (2023-03-22)
 
 ### Bug Fixes
 
-* use correct path separators in travis.yml ([#248](https://github.com/oclif/oclif/issues/248)) ([ec41aa5](https://github.com/oclif/oclif/commit/ec41aa5c97c49257cd8006b2554d671b52de029f))
+- pass isWritingManifest true to plugin.load ([#1126](https://github.com/oclif/oclif/issues/1126)) ([c6a124a](https://github.com/oclif/oclif/commit/c6a124a032da4672b397dc5eeaa01ee13aea4104))
 
+# [3.7.0](https://github.com/oclif/oclif/compare/3.6.5...3.7.0) (2023-02-22)
 
+### Features
 
-## [1.13.3](https://github.com/oclif/oclif/compare/v1.13.2...v1.13.3) (2019-06-17)
+- create symlinks from binAliases to bin for pack:macos ([#1109](https://github.com/oclif/oclif/issues/1109)) ([70f0b27](https://github.com/oclif/oclif/commit/70f0b27894f6914ed813a044d5b364af1c9295c9))
 
+## [3.6.5](https://github.com/oclif/oclif/compare/3.6.4...3.6.5) (2023-02-15)
 
 ### Bug Fixes
 
-* set "composite": false ([#247](https://github.com/oclif/oclif/issues/247)) ([25fde1c](https://github.com/oclif/oclif/commit/25fde1c4ab6a5c36b8f8300831ba9cd5f8b25e41))
+- explicitly ask for latest from npm ([#1107](https://github.com/oclif/oclif/issues/1107)) ([7991005](https://github.com/oclif/oclif/commit/7991005402143079cde1ab36c91074a82f757a34))
 
+## [3.6.4](https://github.com/oclif/oclif/compare/3.6.3...3.6.4) (2023-02-14)
 
+### Bug Fixes
 
-## [1.13.2](https://github.com/oclif/oclif/compare/v1.13.1...v1.13.2) (2019-05-29)
+- check if oclif section exists ([#1105](https://github.com/oclif/oclif/issues/1105)) ([d296847](https://github.com/oclif/oclif/commit/d296847bd061bd4845370eebca51b202f8220848))
 
+## [3.6.3](https://github.com/oclif/oclif/compare/3.6.2...3.6.3) (2023-02-06)
 
 ### Bug Fixes
 
-* update license template copyright year ([9cfaea8](https://github.com/oclif/oclif/commit/9cfaea817efee4ab759dc3c2d85bd124bd565436))
+- command template ([#1101](https://github.com/oclif/oclif/issues/1101)) ([80670ef](https://github.com/oclif/oclif/commit/80670ef315e59b8d8b07e062b494796cb8c22538))
 
+## [3.6.2](https://github.com/oclif/oclif/compare/3.6.1...3.6.2) (2023-02-01)
 
+### Bug Fixes
 
-## [1.13.1](https://github.com/oclif/oclif/compare/v1.13.0...v1.13.1) (2019-03-24)
+- workaround wireit ([#1092](https://github.com/oclif/oclif/issues/1092)) ([44d9f69](https://github.com/oclif/oclif/commit/44d9f6978ce96e3d40ceba7b3215c36197b63519))
 
+## [3.6.1](https://github.com/oclif/oclif/compare/3.6.0...3.6.1) (2023-01-23)
 
 ### Bug Fixes
 
-* test on node 10 ([cf10522](https://github.com/oclif/oclif/commit/cf10522437dfa01d6fb8aeedddf58752db34eb41))
+- bump core ([b56ba9e](https://github.com/oclif/oclif/commit/b56ba9e16293b4224bc264d7d144941f694b94a1))
 
+# [3.6.0](https://github.com/oclif/oclif/compare/3.5.0...3.6.0) (2023-01-19)
 
+### Features
 
-# [1.13.0](https://github.com/oclif/oclif/compare/v1.12.10...v1.13.0) (2019-03-17)
+- support JIT plugins ([#1009](https://github.com/oclif/oclif/issues/1009)) ([b713b9d](https://github.com/oclif/oclif/commit/b713b9dc52f34f5b1c92d8d19c541d2ad785c872))
 
+# [3.5.0](https://github.com/oclif/oclif/compare/3.4.6...3.5.0) (2023-01-18)
 
 ### Features
 
-* Added Travis CI Support ([#214](https://github.com/oclif/oclif/issues/214)) ([5a9d300](https://github.com/oclif/oclif/commit/5a9d30021749c4eec26516e535cf1d7b058640c3))
+- use oclif/core v2 ([#1081](https://github.com/oclif/oclif/issues/1081)) ([d8352ff](https://github.com/oclif/oclif/commit/d8352ffe6bfcdfca7c0021ef53b8a8e38477cae7))
 
+## [3.4.6](https://github.com/oclif/oclif/compare/3.4.5...3.4.6) (2023-01-18)
 
+### Bug Fixes
 
-## [1.12.10](https://github.com/oclif/oclif/compare/v1.12.9...v1.12.10) (2019-02-12)
+- forwards compatibility ([dac9e15](https://github.com/oclif/oclif/commit/dac9e150f3a7bc7e473fd6e0cb82940691d1be63))
 
+## [3.4.5](https://github.com/oclif/oclif/compare/3.4.4...3.4.5) (2023-01-18)
 
 ### Bug Fixes
 
-* don't include mocha types on no mocha ([#206](https://github.com/oclif/oclif/issues/206)) ([505c43b](https://github.com/oclif/oclif/commit/505c43b2a45cd7ec4e8e0e30e5742d12050f19dc))
+- args forwards compatibility ([5a9d636](https://github.com/oclif/oclif/commit/5a9d6360c58c1968e82aa6d9ff27227367701f79))
 
+## [3.4.4](https://github.com/oclif/oclif/compare/3.4.3...3.4.4) (2023-01-18)
 
+### Bug Fixes
 
-## [1.12.9](https://github.com/oclif/oclif/compare/v1.12.8...v1.12.9) (2019-02-11)
+- bump oclif/core ([f488b16](https://github.com/oclif/oclif/commit/f488b1693d8ae0ee1529f3d25797375dd0f2d3aa))
 
+## [3.4.3](https://github.com/oclif/oclif/compare/3.4.2...3.4.3) (2022-12-27)
 
 ### Bug Fixes
 
-* typescript@3.3 ([6ff355f](https://github.com/oclif/oclif/commit/6ff355f010a6c98bab93a053e60d9b61868ab18c))
+- make oclif.s3.folder optional for --indexes ([#1063](https://github.com/oclif/oclif/issues/1063)) ([df9db2f](https://github.com/oclif/oclif/commit/df9db2fa2906f5e0322c5e8fd8eddacfecee24ca))
 
+## [3.4.2](https://github.com/oclif/oclif/compare/3.4.1...3.4.2) (2022-12-07)
 
+### Bug Fixes
 
-## [1.12.8](https://github.com/oclif/oclif/compare/v1.12.7...v1.12.8) (2018-12-17)
+- win pack error ([#1054](https://github.com/oclif/oclif/issues/1054)) ([bc23384](https://github.com/oclif/oclif/commit/bc233845270c4b9a7d61b7c411a369ed65d45886))
 
+## [3.4.1](https://github.com/oclif/oclif/compare/3.4.0...3.4.1) (2022-12-05)
 
 ### Bug Fixes
 
-* typescript@3.2 ([#197](https://github.com/oclif/oclif/issues/197)) ([07013c8](https://github.com/oclif/oclif/commit/07013c871e1fc4afee7e72a2c262aaeab19e7675))
+- json output formatting ([#1051](https://github.com/oclif/oclif/issues/1051)) ([25d1513](https://github.com/oclif/oclif/commit/25d15133cc93ce27372e6c90279932b14e4dae39))
 
+# [3.4.0](https://github.com/oclif/oclif/compare/3.3.1...3.4.0) (2022-12-05)
 
+### Features
 
-## [1.12.7](https://github.com/oclif/oclif/compare/v1.12.6...v1.12.7) (2018-12-03)
+- remove qq and parallelize build/pack/promote ([#1035](https://github.com/oclif/oclif/issues/1035)) ([db2a858](https://github.com/oclif/oclif/commit/db2a85873de63a9bce0a16f11916f38974ee7494))
 
+## [3.3.1](https://github.com/oclif/oclif/compare/3.3.0...3.3.1) (2022-12-04)
 
 ### Bug Fixes
 
-* updated deps ([ffe8868](https://github.com/oclif/oclif/commit/ffe88680fdb03de2119b15f8e0513acc7d922df3))
+- **deps:** bump concurrently from 7.5.0 to 7.6.0 ([49b301e](https://github.com/oclif/oclif/commit/49b301e5fa9ad726af05f2dab5b273afd89983f8))
 
+# [3.3.0](https://github.com/oclif/oclif/compare/3.2.31...3.3.0) (2022-11-29)
 
+### Features
 
-## [1.12.6](https://github.com/oclif/oclif/compare/v1.12.5...v1.12.6) (2018-11-14)
+- add 'target' argument when packing/uploading macOS ([#1033](https://github.com/oclif/oclif/issues/1033)) ([fb6473d](https://github.com/oclif/oclif/commit/fb6473d18d29e924384a9cfec4f6caca04ce233c))
 
+## [3.2.31](https://github.com/oclif/oclif/compare/3.2.30...3.2.31) (2022-11-27)
 
 ### Bug Fixes
 
-* updated deps ([2ff77ed](https://github.com/oclif/oclif/commit/2ff77ed9f696fa95828f01e4942648d3486859ab))
+- **deps:** bump github-slugger from 1.4.0 to 1.5.0 ([a41baca](https://github.com/oclif/oclif/commit/a41baca347b3115452ff03aa4d0e603a1454c0cf))
 
+## [3.2.30](https://github.com/oclif/oclif/compare/3.2.29...3.2.30) (2022-11-27)
 
+### Bug Fixes
 
-## [1.12.5](https://github.com/oclif/oclif/compare/v1.12.4...v1.12.5) (2018-10-16)
+- **deps:** bump minimatch from 3.0.4 to 3.1.2 ([dcd7ba2](https://github.com/oclif/oclif/commit/dcd7ba26816e3564d95579f31d3316b4cea8c712))
 
+## [3.2.29](https://github.com/oclif/oclif/compare/3.2.28...3.2.29) (2022-11-20)
 
 ### Bug Fixes
 
-* default to not using shrinkwrap ([902c350](https://github.com/oclif/oclif/commit/902c350cb9b728f2424ecfb3a8497a23485b67c4))
+- **deps:** bump @oclif/plugin-help from 5.1.16 to 5.1.19 ([ac48fd7](https://github.com/oclif/oclif/commit/ac48fd702dc916f3e10ea9a8faed737d376ae0ac))
 
+## [3.2.28](https://github.com/oclif/oclif/compare/3.2.27...3.2.28) (2022-11-20)
 
+### Bug Fixes
 
-## [1.12.4](https://github.com/oclif/oclif/compare/v1.12.3...v1.12.4) (2018-10-13)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([e096886](https://github.com/oclif/oclif/commit/e096886d375ca53f19ec49bb654615cfa9458a93))
 
+## [3.2.27](https://github.com/oclif/oclif/compare/3.2.26...3.2.27) (2022-11-13)
 
 ### Bug Fixes
 
-* remove greenkeeper badge ([9690390](https://github.com/oclif/oclif/commit/9690390110892af4b3a41e5989b1e5cbba4c2da5))
+- **deps:** bump @oclif/plugin-warn-if-update-available ([3f83f13](https://github.com/oclif/oclif/commit/3f83f132f85641b05eee0dc7bec82bcc2fdf103e))
 
+## [3.2.26](https://github.com/oclif/oclif/compare/3.2.25...3.2.26) (2022-11-13)
 
+### Bug Fixes
 
-## [1.12.3](https://github.com/oclif/oclif/compare/v1.12.2...v1.12.3) (2018-10-13)
+- **deps:** bump @oclif/core from 1.20.0 to 1.20.3 ([dfc7df1](https://github.com/oclif/oclif/commit/dfc7df1cfb477531c7ed88798e4de1a41795a0db))
+- **deps:** bump @oclif/core from 1.20.3 to 1.20.4 ([17b0394](https://github.com/oclif/oclif/commit/17b039479f261960fc9df21041445589737ad855))
 
+## [3.2.25](https://github.com/oclif/oclif/compare/3.2.24...3.2.25) (2022-11-06)
 
 ### Bug Fixes
 
-* prepack ([85c0a36](https://github.com/oclif/oclif/commit/85c0a362591359da7d752f275893a62773bebfa2))
+- **deps:** bump @oclif/plugin-not-found from 2.3.6 to 2.3.7 ([24925b0](https://github.com/oclif/oclif/commit/24925b0d6d33db584f7a330ccc08c42489c028be))
 
+## [3.2.24](https://github.com/oclif/oclif/compare/3.2.23...3.2.24) (2022-10-30)
 
+### Bug Fixes
 
-## [1.12.2](https://github.com/oclif/oclif/compare/v1.12.1...v1.12.2) (2018-10-13)
+- **deps:** bump @oclif/core from 1.18.0 to 1.20.0 ([a0a0a50](https://github.com/oclif/oclif/commit/a0a0a5020e3b57a99c5f4533a097acef8d89ba30))
 
+## [3.2.23](https://github.com/oclif/oclif/compare/3.2.22...3.2.23) (2022-10-30)
 
 ### Bug Fixes
 
-* shrinkwrap ([7f86997](https://github.com/oclif/oclif/commit/7f869970b1e9d84de2e8c09b4eb2a6923332169b))
+- **deps:** bump concurrently from 7.4.0 to 7.5.0 ([08caed4](https://github.com/oclif/oclif/commit/08caed4f3af3c4540c893b1a7b4585b089707f0c))
 
+## [3.2.22](https://github.com/oclif/oclif/compare/3.2.21...3.2.22) (2022-10-23)
 
+### Bug Fixes
 
-## [1.12.1](https://github.com/oclif/oclif/compare/v1.12.0...v1.12.1) (2018-09-15)
+- **deps:** bump @oclif/plugin-not-found from 2.3.5 to 2.3.6 ([f886f7a](https://github.com/oclif/oclif/commit/f886f7a6d64a5ca33b0bac934abe770501cc480c))
 
+## [3.2.21](https://github.com/oclif/oclif/compare/3.2.20...3.2.21) (2022-10-23)
 
 ### Bug Fixes
 
-* source-map-register is not needed ([dfd3170](https://github.com/oclif/oclif/commit/dfd31701a0aa426c0d3f372de9c350620c0ccd91))
+- **deps:** bump @oclif/plugin-help from 5.1.15 to 5.1.16 ([18a6633](https://github.com/oclif/oclif/commit/18a66335f66433fc76ab5ee5703812bc1c2e0b93))
 
+## [3.2.20](https://github.com/oclif/oclif/compare/3.2.19...3.2.20) (2022-10-20)
 
+### Bug Fixes
 
-# [1.12.0](https://github.com/oclif/oclif/compare/v1.11.7...v1.12.0) (2018-09-15)
+- deb pack privileges ([#987](https://github.com/oclif/oclif/issues/987)) ([5392841](https://github.com/oclif/oclif/commit/539284102e5f05779e5e96eae022756f8478bfae))
 
+## [3.2.19](https://github.com/oclif/oclif/compare/3.2.18...3.2.19) (2022-10-16)
 
 ### Bug Fixes
 
-* break linters out into separate question ([a3edcd4](https://github.com/oclif/oclif/commit/a3edcd469599ca108d72d1898730e7d083d15324))
-* break linters out into separate question ([c8b05f8](https://github.com/oclif/oclif/commit/c8b05f825aebf314b178e3961ff636377ed2f238))
-* break yarn/npm into separate question ([3f80dea](https://github.com/oclif/oclif/commit/3f80dea3b226fb422875fbb1516afcc0aea9f07e))
-* remove unnecessary tsc calls ([85082b5](https://github.com/oclif/oclif/commit/85082b57b532a1cc5fc51d5275bc74c7957eab01))
+- **deps:** bump @oclif/core from 1.16.4 to 1.18.0 ([badd7b0](https://github.com/oclif/oclif/commit/badd7b0564a59f50833dd659c5bbfc6d50ac3591))
 
+## [3.2.18](https://github.com/oclif/oclif/compare/3.2.17...3.2.18) (2022-10-16)
 
-### Features
+### Bug Fixes
 
-* simplify nyc config ([86a2c52](https://github.com/oclif/oclif/commit/86a2c52735f2082eaf95c058f85b0cde36dc9d1e))
-* use typescript 3.0 project references ([3a9bf0f](https://github.com/oclif/oclif/commit/3a9bf0f866a0a41d9e61b0d461277df1c95e2f94))
+- **deps:** bump @oclif/plugin-not-found from 2.3.4 to 2.3.5 ([b9a658e](https://github.com/oclif/oclif/commit/b9a658e22ebdbe4b8c14419b9b61606d9386a8cc))
 
+## [3.2.17](https://github.com/oclif/oclif/compare/3.2.16...3.2.17) (2022-10-16)
 
+### Bug Fixes
 
-## [1.11.7](https://github.com/oclif/oclif/compare/v1.11.6...v1.11.7) (2018-09-14)
+- **deps:** bump @oclif/plugin-help from 5.1.14 to 5.1.15 ([33b7925](https://github.com/oclif/oclif/commit/33b79250e7af4f7f38ffb2ebae43af900b96e829))
 
+## [3.2.16](https://github.com/oclif/oclif/compare/3.2.15...3.2.16) (2022-10-09)
 
 ### Bug Fixes
 
-* greenkeeper-lockfile no longer necessary ([8f55fd0](https://github.com/oclif/oclif/commit/8f55fd08415146b837267962a82518ac41118867))
+- **deps:** bump aws-sdk from 2.1227.0 to 2.1231.0 ([e1234f5](https://github.com/oclif/oclif/commit/e1234f5a1db7b3cb1b8c0278fa2f3382b7eb6f69))
 
+## [3.2.15](https://github.com/oclif/oclif/compare/3.2.14...3.2.15) (2022-10-09)
 
+### Bug Fixes
 
-## [1.11.6](https://github.com/oclif/oclif/compare/v1.11.5...v1.11.6) (2018-09-14)
+- **deps:** bump semver from 7.3.7 to 7.3.8 ([cda6620](https://github.com/oclif/oclif/commit/cda6620b5c69859f7474b1ef009567256b7ba427))
 
+## [3.2.14](https://github.com/oclif/oclif/compare/3.2.13...3.2.14) (2022-10-09)
 
 ### Bug Fixes
 
-* updated eslint and tslint ([c2ae997](https://github.com/oclif/oclif/commit/c2ae997e16bdefcb6b7036f63824df4bc9278b30))
+- **deps:** bump @oclif/plugin-not-found from 2.3.3 to 2.3.4 ([1bb086b](https://github.com/oclif/oclif/commit/1bb086b87fec53d858e51092a32f493bb79ab399))
 
+## [3.2.13](https://github.com/oclif/oclif/compare/3.2.12...3.2.13) (2022-10-02)
 
+### Bug Fixes
 
-## [1.11.5](https://github.com/oclif/oclif/compare/v1.11.4...v1.11.5) (2018-08-29)
+- **deps:** bump aws-sdk from 2.1226.0 to 2.1227.0 ([6526f12](https://github.com/oclif/oclif/commit/6526f122ced48b7f8b6ca33dac5d5829ee4b6d1d))
 
+## [3.2.12](https://github.com/oclif/oclif/compare/3.2.11...3.2.12) (2022-10-01)
 
 ### Bug Fixes
 
-* fixpack -> @oclif/fixpack ([a69c4be](https://github.com/oclif/oclif/commit/a69c4be0c6cd44052a0a850f270aa2cbedca59e0))
-* hide yarn output when not found ([a3897b1](https://github.com/oclif/oclif/commit/a3897b18290b9e3265e4cb25dacec93c26941cd2))
-* set project path for single CLIs ([3ec87bc](https://github.com/oclif/oclif/commit/3ec87bcef150ace5afb0159482e3762482373bdf)), closes [#161](https://github.com/oclif/oclif/issues/161)
-* use @oclif/fixpack to fix audit warning ([0c2aa20](https://github.com/oclif/oclif/commit/0c2aa206e9802112c67c0df2c91ef580e165b274))
+- **deps:** bump aws-sdk from 2.1116.0 to 2.1226.0 ([6ad1679](https://github.com/oclif/oclif/commit/6ad1679dc2492c8ab484c7171beb99ae8eaf1714))
 
+## [3.2.11](https://github.com/oclif/oclif/compare/3.2.10...3.2.11) (2022-09-30)
 
+### Bug Fixes
 
-## [1.11.4](https://github.com/oclif/oclif/compare/v1.11.3...v1.11.4) (2018-08-22)
+- **deps:** bump @oclif/plugin-not-found from 2.3.1 to 2.3.3 ([f3142a7](https://github.com/oclif/oclif/commit/f3142a74d02f9770c9683ffc05204238ac1cd4bc))
 
+## [3.2.10](https://github.com/oclif/oclif/compare/3.2.9...3.2.10) (2022-09-30)
 
 ### Bug Fixes
 
-* updated yeoman and update warning ([deea525](https://github.com/oclif/oclif/commit/deea5254cbdeae23eb0a6d736f1f8797ec04efb6))
+- **deps:** bump concurrently from 7.0.0 to 7.4.0 ([f5781ce](https://github.com/oclif/oclif/commit/f5781ce60c8fdf55dbbf41869c2b47a250c023f1))
 
+## [3.2.9](https://github.com/oclif/oclif/compare/3.2.8...3.2.9) (2022-09-29)
 
+### Bug Fixes
 
-## [1.11.3](https://github.com/oclif/oclif/compare/v1.11.2...v1.11.3) (2018-08-22)
+- **deps:** bump @oclif/plugin-warn-if-update-available ([8d6a86c](https://github.com/oclif/oclif/commit/8d6a86cc91986862b5cff74db5c1f0b440caa09d))
 
+## [3.2.8](https://github.com/oclif/oclif/compare/3.2.7...3.2.8) (2022-09-29)
 
 ### Bug Fixes
 
-* update eslint to latest major in generator ([#152](https://github.com/oclif/oclif/issues/152)) ([7d72d21](https://github.com/oclif/oclif/commit/7d72d21e4592094be1d7c70d9e5d29a840e18175))
+- **deps:** bump @oclif/core from 1.16.1 to 1.16.4 ([f546267](https://github.com/oclif/oclif/commit/f546267e21727b463409619fa320a7e724ec7186))
 
+## [3.2.7](https://github.com/oclif/oclif/compare/3.2.6...3.2.7) (2022-09-29)
 
+### Bug Fixes
 
-## [1.11.2](https://github.com/oclif/oclif/compare/v1.11.1...v1.11.2) (2018-08-17)
+- **deps:** bump @oclif/plugin-help from 5.1.12 to 5.1.14 ([0a5a33c](https://github.com/oclif/oclif/commit/0a5a33ce652e79c37da3f56ae48fbe10a0cbcd0c))
 
+## [3.2.6](https://github.com/oclif/oclif/compare/3.2.5...3.2.6) (2022-09-29)
 
 ### Bug Fixes
 
-* use greenkeeper-lockfile@2 ([1e99237](https://github.com/oclif/oclif/commit/1e99237e6ce70e815b018ccb987aaa8f02b5e074))
+- **deps:** bump yeoman-environment from 3.9.1 to 3.11.1 ([9ca60df](https://github.com/oclif/oclif/commit/9ca60dff900142597bfba3d86bf0977d82173719))
 
+## [3.2.5](https://github.com/oclif/oclif/compare/3.2.4...3.2.5) (2022-09-27)
 
+### Bug Fixes
 
-## [1.11.1](https://github.com/oclif/oclif/compare/v1.11.0...v1.11.1) (2018-08-17)
+- wrongly packaging child bundles on MacOS ([#971](https://github.com/oclif/oclif/issues/971)) ([de64974](https://github.com/oclif/oclif/commit/de649743c9584ffbe1ad150cb485530e04c1621d))
 
+## [3.2.4](https://github.com/oclif/oclif/compare/3.2.3...3.2.4) (2022-09-27)
 
 ### Bug Fixes
 
-* updated oclif and dev-cli ([e2adf70](https://github.com/oclif/oclif/commit/e2adf70f3a0a58aa79aa30a9eddf9ceb5c3aa15f))
+- add toc tag to readme command description ([#924](https://github.com/oclif/oclif/issues/924)) ([5bdd481](https://github.com/oclif/oclif/commit/5bdd4819b513558082010035bef4230d3d111957))
+
+## [3.2.3](https://github.com/oclif/oclif/compare/v3.2.2...3.2.3) (2022-09-27)
 
+### Bug Fixes
 
+- Update hooks generator to point to ./dist/hooks instead of ./src/hooks ([#904](https://github.com/oclif/oclif/issues/904)) ([fd48e54](https://github.com/oclif/oclif/commit/fd48e548863e3eb27f22a2de9e0e274ae56a9448))
 
-# [1.11.0](https://github.com/oclif/oclif/compare/v1.10.3...v1.11.0) (2018-08-17)
+## [3.2.2](https://github.com/oclif/oclif/compare/v3.2.1...v3.2.2) (2022-09-16)
 
+## [3.2.1](https://github.com/oclif/oclif/compare/v3.2.0...v3.2.1) (2022-09-09)
 
 ### Bug Fixes
 
-* updated oclif ([edd7fd8](https://github.com/oclif/oclif/commit/edd7fd8884c6610ef0b95edf2c6d0e274725d8f6))
+- bump oclif/core ([21aa0d7](https://github.com/oclif/oclif/commit/21aa0d754f0afe5a2e9f25cd1c32266ef2b9ac2d))
 
+# [3.2.0](https://github.com/oclif/oclif/compare/v3.1.2...v3.2.0) (2022-09-06)
 
 ### Features
 
-* typescript 3 and ts-node 7 ([9c58896](https://github.com/oclif/oclif/commit/9c58896a733467474917293ec996a21ff5e14c37))
+- add `--aliases` flag for readme command ([#925](https://github.com/oclif/oclif/issues/925)) ([#952](https://github.com/oclif/oclif/issues/952)) ([5bf2b5a](https://github.com/oclif/oclif/commit/5bf2b5a51210d554a1768d69fbf93c9c6f6b2b2a))
 
+## [3.1.2](https://github.com/oclif/oclif/compare/v3.1.1...v3.1.2) (2022-07-27)
 
+### Bug Fixes
 
-## [1.10.3](https://github.com/oclif/oclif/compare/v1.10.2...v1.10.3) (2018-08-17)
+- await yeoman generators ([#926](https://github.com/oclif/oclif/issues/926)) ([da5a4d2](https://github.com/oclif/oclif/commit/da5a4d202be114fe7f0c00d2737a9faf8f4e19ab))
 
+## [3.1.1](https://github.com/oclif/oclif/compare/v3.1.0...v3.1.1) (2022-07-15)
 
 ### Bug Fixes
 
-* regenerate readme when adding command ([408705b](https://github.com/oclif/oclif/commit/408705b01ce7a889f18c02d53212df770e057974))
+- readme for single command cli ([#916](https://github.com/oclif/oclif/issues/916)) ([242b34f](https://github.com/oclif/oclif/commit/242b34f62656b2c6ee8a1d0ecda8d98f8c1c5bbc))
 
+# [3.1.0](https://github.com/oclif/oclif/compare/v3.0.1...v3.1.0) (2022-07-07)
 
+### Features
 
-## [1.10.2](https://github.com/oclif/oclif/compare/v1.10.1...v1.10.2) (2018-08-17)
+- build/pack in parallel ([#914](https://github.com/oclif/oclif/issues/914)) ([d86c722](https://github.com/oclif/oclif/commit/d86c722d8de66560c672c2fbdb338cc9a024caa2))
 
+## [3.0.1](https://github.com/oclif/oclif/compare/v3.0.0...v3.0.1) (2022-04-18)
 
 ### Bug Fixes
 
-* generate readme ([185ef6c](https://github.com/oclif/oclif/commit/185ef6c0b3d3cb7fd7a98f7fbe31b2df4c66a2ec))
-* newlines in readme ([5281952](https://github.com/oclif/oclif/commit/5281952ce215564b0c2298c90701406432265f7b))
+- remove outdated code ([#866](https://github.com/oclif/oclif/issues/866)) ([e3f60a3](https://github.com/oclif/oclif/commit/e3f60a3109502bc59d1fbd71a3fbbd3668dcd3eb))
 
+# [3.0.0](https://github.com/oclif/oclif/compare/v2.6.3...v3.0.0) (2022-04-13)
 
+## [2.6.3](https://github.com/oclif/oclif/compare/v2.6.2...v2.6.3) (2022-03-31)
 
-## [1.10.1](https://github.com/oclif/oclif/compare/v1.10.0...v1.10.1) (2018-08-17)
+### Bug Fixes
+
+- update oclif/core ([7e86036](https://github.com/oclif/oclif/commit/7e86036b4e673003ad6226852260c929d62a1c39))
 
+## [2.6.2](https://github.com/oclif/oclif/compare/v2.6.1...v2.6.2) (2022-03-31)
 
 ### Bug Fixes
 
-* add circleci,appveyor,codecov to examples ([5cc3f54](https://github.com/oclif/oclif/commit/5cc3f54e73071ba44ab29a2fc9d97604ed8bbb05))
-* always use --save with npm ([#149](https://github.com/oclif/oclif/issues/149)) ([151af6f](https://github.com/oclif/oclif/commit/151af6f1de188a7673158a05a14f264d200d0d6a))
+- revert building mac m1 packages, wait for PR [#849](https://github.com/oclif/oclif/issues/849) ([#855](https://github.com/oclif/oclif/issues/855)) ([e5b68af](https://github.com/oclif/oclif/commit/e5b68af8510b0419ec48d76087ed0bec61fc81ad))
+
+## [2.6.1](https://github.com/oclif/oclif/compare/v2.6.0...v2.6.1) (2022-03-23)
 
+# [2.6.0](https://github.com/oclif/oclif/compare/v2.5.0...v2.6.0) (2022-03-14)
 
+### Features
 
-# [1.10.0](https://github.com/oclif/oclif/compare/v1.9.0...v1.10.0) (2018-08-17)
+- Add support to build darwin-arm64 for `oclif pack macos` ([#847](https://github.com/oclif/oclif/issues/847)) ([61a96c2](https://github.com/oclif/oclif/commit/61a96c2a1c435f5abce8c2348cf7756a4b997269))
 
+# [2.5.0](https://github.com/oclif/oclif/compare/v2.4.5...v2.5.0) (2022-02-24)
 
 ### Features
 
-* make appveyor optional ([#138](https://github.com/oclif/oclif/issues/138)) ([74d17c1](https://github.com/oclif/oclif/commit/74d17c1d20350f740a534f0ca6b4303927450171))
-* make codecov optional ([#139](https://github.com/oclif/oclif/issues/139)) ([30c6aff](https://github.com/oclif/oclif/commit/30c6aff059d6056679214bb3a322c23896d1936c))
-* typescript 3.x ([5badc7a](https://github.com/oclif/oclif/commit/5badc7aca22aa618f30cff6e9cfed9056d94c2db))
+- remove all relevant directories on uninstall ([#831](https://github.com/oclif/oclif/issues/831)) ([acd986d](https://github.com/oclif/oclif/commit/acd986d53681b3840f17220b6e16fd8bb3c869f7))
 
+## [2.4.5](https://github.com/oclif/oclif/compare/v2.4.4...v2.4.5) (2022-02-17)
 
+## [2.4.4](https://github.com/oclif/oclif/compare/v2.4.3...v2.4.4) (2022-02-09)
 
-# [1.9.0](https://github.com/oclif/oclif/compare/v1.8.6...v1.9.0) (2018-07-09)
+### Bug Fixes
 
+- fix tarball packing in paths with spaces ([#825](https://github.com/oclif/oclif/issues/825)) ([#826](https://github.com/oclif/oclif/issues/826)) ([9e12c70](https://github.com/oclif/oclif/commit/9e12c70be6c85a9de7fff991e2c2d6574fd6173d))
 
-### Features
+## [2.4.3](https://github.com/oclif/oclif/compare/v2.4.2...v2.4.3) (2022-02-01)
+
+### Bug Fixes
 
-* make circleci optional ([#137](https://github.com/oclif/oclif/issues/137)) ([259d304](https://github.com/oclif/oclif/commit/259d30466b30a7542add620e63128cf0272dd289))
+- remove dependency on nps-utils ([#822](https://github.com/oclif/oclif/issues/822)) ([5c01f53](https://github.com/oclif/oclif/commit/5c01f53930ce56a476ba1f8abd1208cbc5b91dc2))
 
+## [2.4.2](https://github.com/oclif/oclif/compare/v2.4.1...v2.4.2) (2022-02-01)
 
+### Bug Fixes
 
-## [1.8.6](https://github.com/oclif/oclif/compare/v1.8.5...v1.8.6) (2018-07-02)
+- remove IManifest ([#823](https://github.com/oclif/oclif/issues/823)) ([31f1f07](https://github.com/oclif/oclif/commit/31f1f07480d4f59db45da35ff0926bc44665cc6f))
 
+## [2.4.1](https://github.com/oclif/oclif/compare/v2.4.0...v2.4.1) (2022-01-31)
 
 ### Bug Fixes
 
-* updated deps ([6f71fed](https://github.com/oclif/oclif/commit/6f71fed14b0c38ffe125c0017a1f50c576d40e9d))
+- update error messages ([#806](https://github.com/oclif/oclif/issues/806)) ([7a63b49](https://github.com/oclif/oclif/commit/7a63b4987bd8d6e4f2f3211a05248296e5f6d090))
 
+# [2.4.0](https://github.com/oclif/oclif/compare/v2.3.1...v2.4.0) (2022-01-27)
 
+### Features
 
-## [1.8.5](https://github.com/oclif/oclif/compare/v1.8.4...v1.8.5) (2018-06-16)
+- remove cli-ux ([#804](https://github.com/oclif/oclif/issues/804)) ([fd9d1fb](https://github.com/oclif/oclif/commit/fd9d1fb5672df197c559c6044d51797ad6fe7ffd))
 
+## [2.3.1](https://github.com/oclif/oclif/compare/v2.3.0...v2.3.1) (2022-01-27)
 
 ### Bug Fixes
 
-* remove shrinkwrap after publishing ([3a1441d](https://github.com/oclif/oclif/commit/3a1441deab5bd58927c51188831be214c02f24f6))
+- remove accidental dep ([8e5435f](https://github.com/oclif/oclif/commit/8e5435fb84febd950be387849f921a76a39f8eb0))
 
+# [2.3.0](https://github.com/oclif/oclif/compare/v2.2.0...v2.3.0) (2022-01-20)
 
+### Features
 
-## [1.8.4](https://github.com/oclif/oclif/compare/v1.8.3...v1.8.4) (2018-06-14)
+- use yeoman-generator v5 ([#797](https://github.com/oclif/oclif/issues/797)) ([37827bf](https://github.com/oclif/oclif/commit/37827bf258ff8145c98a9c621b853ac6b1020fdb))
 
+# [2.2.0](https://github.com/oclif/oclif/compare/v2.1.8...v2.2.0) (2022-01-13)
 
-### Bug Fixes
+### Features
 
-* js setups ([ab161e5](https://github.com/oclif/oclif/commit/ab161e5b60a5d350eb71683e94e0377e23c71b87))
+- optionally include tarball path as input ([#764](https://github.com/oclif/oclif/issues/764)) ([#796](https://github.com/oclif/oclif/issues/796)) ([ee6ff99](https://github.com/oclif/oclif/commit/ee6ff99ad5e11cb1abe1de17791a8b987833e381))
 
+## [2.1.8](https://github.com/oclif/oclif/compare/v2.1.7...v2.1.8) (2022-01-12)
 
+### Bug Fixes
 
-## [1.8.3](https://github.com/oclif/oclif/compare/v1.8.2...v1.8.3) (2018-06-14)
+- remove unnecessary dependency ([#794](https://github.com/oclif/oclif/issues/794)) ([f814f00](https://github.com/oclif/oclif/commit/f814f009b9b203c8917e265c16015a08af911537))
 
+## [2.1.7](https://github.com/oclif/oclif/compare/v2.1.6...v2.1.7) (2022-01-11)
 
 ### Bug Fixes
 
-* add shrinkwrap file ([819e971](https://github.com/oclif/oclif/commit/819e9716f0d9f7be987d14b9919fdaeb68e293dc))
+- correct package name ([#792](https://github.com/oclif/oclif/issues/792)) ([7197f98](https://github.com/oclif/oclif/commit/7197f98233d4391e4f322d16ff4a0cc92f7a4a6f))
+
+## [2.1.6](https://github.com/oclif/oclif/compare/v2.1.5...v2.1.6) (2022-01-11)
 
+### Bug Fixes
 
+- remove fixpack dependency ([#791](https://github.com/oclif/oclif/issues/791)) ([823300e](https://github.com/oclif/oclif/commit/823300e103bac560fd1e9e8748b33be59a80b066))
 
-## [1.8.2](https://github.com/oclif/oclif/compare/v1.8.1...v1.8.2) (2018-06-12)
+## [2.1.5](https://github.com/oclif/oclif/compare/v2.1.4...v2.1.5) (2022-01-10)
 
+## [2.1.4](https://github.com/oclif/oclif/compare/v2.1.3...v2.1.4) (2022-01-10)
 
 ### Bug Fixes
 
-* Add rimraf to devDependencies for single and multi projects and use it in npm scripts ([#123](https://github.com/oclif/oclif/issues/123)) ([764ade1](https://github.com/oclif/oclif/commit/764ade1dfcf99e3de74a9a93dc85cc24e3d927a0))
+- bump cli-ux to 6.0.8 ([46d2d8a](https://github.com/oclif/oclif/commit/46d2d8abaf0ba0b4d076e5ac33fa8ca78a528ed6))
 
+## [2.1.3](https://github.com/oclif/oclif/compare/v2.1.2...v2.1.3) (2022-01-10)
 
+### Bug Fixes
 
-## [1.8.1](https://github.com/oclif/oclif/compare/v1.8.0...v1.8.1) (2018-06-10)
+- bump deps ([154913b](https://github.com/oclif/oclif/commit/154913bd8db4139b9298d78355f889f20dfb23eb))
 
+## [2.1.2](https://github.com/oclif/oclif/compare/v2.1.1...v2.1.2) (2022-01-08)
 
 ### Bug Fixes
 
-* updated deps ([50604af](https://github.com/oclif/oclif/commit/50604afbc47202c2d615cc2a878bcd0309400127))
+- add override for colors ([8bb26b0](https://github.com/oclif/oclif/commit/8bb26b01859165de8759529f8b61ae28cf25b748))
 
+## [2.1.1](https://github.com/oclif/oclif/compare/v2.1.0...v2.1.1) (2022-01-08)
 
+### Bug Fixes
 
-# [1.8.0](https://github.com/oclif/oclif/compare/v1.7.56...v1.8.0) (2018-06-02)
+- add resolution for colors ([0ea44d4](https://github.com/oclif/oclif/commit/0ea44d45cffdca54c5294a97725a332f94fb69c2))
 
+# [2.1.0](https://github.com/oclif/oclif/compare/v2.0.1...v2.1.0) (2021-12-21)
 
 ### Features
 
-* add oclif badge ([620707c](https://github.com/oclif/oclif/commit/620707ce80a17f1ba0e4e3e447ad16128b81638a))
-
+- add version info to registry for windows installers ([#769](https://github.com/oclif/oclif/issues/769)) ([291603a](https://github.com/oclif/oclif/commit/291603a471757596ebed27b0758bae9871fd53b0))
 
+## [2.0.1](https://github.com/oclif/oclif/compare/v2.0.0-main.19...v2.0.1) (2021-12-08)
 
-## [1.7.56](https://github.com/oclif/oclif/compare/v1.7.55...v1.7.56) (2018-06-01)
-
+# [2.0.0-main.19](https://github.com/oclif/oclif/compare/v2.0.0-main.18...v2.0.0-main.19) (2021-12-08)
 
 ### Bug Fixes
 
-* nyc@12 ([8984592](https://github.com/oclif/oclif/commit/8984592f7b98329b9d3c9ba766f36e4310faee2d))
+- bump deps ([#750](https://github.com/oclif/oclif/issues/750)) ([ffb9b99](https://github.com/oclif/oclif/commit/ffb9b99ba2f53a9049f04d0dfea1a4b4b427dfe0))
+
+# [2.0.0-main.18](https://github.com/oclif/oclif/compare/v2.0.0-main.17...v2.0.0-main.18) (2021-12-08)
 
+# [2.0.0-main.17](https://github.com/oclif/oclif/compare/v2.0.0-main.16...v2.0.0-main.17) (2021-12-08)
 
+# [2.0.0-main.16](https://github.com/oclif/oclif/compare/v2.0.0-main.15...v2.0.0-main.16) (2021-12-08)
 
-## [1.7.55](https://github.com/oclif/oclif/compare/v1.7.54...v1.7.55) (2018-06-01)
+# [2.0.0-main.15](https://github.com/oclif/oclif/compare/v2.0.0-main.14...v2.0.0-main.15) (2021-12-08)
 
+# [2.0.0-main.14](https://github.com/oclif/oclif/compare/v2.0.0-main.13...v2.0.0-main.14) (2021-12-07)
 
 ### Bug Fixes
 
-* add prepare step ([dd927fb](https://github.com/oclif/oclif/commit/dd927fb458bc30fc5606c10b12d7cf9f4ec8ba87))
-* remove es module config ([80ef22b](https://github.com/oclif/oclif/commit/80ef22b17bd96247b9d41ad2070e25d1ff3d185d))
-* updated deps ([64a13d1](https://github.com/oclif/oclif/commit/64a13d1ac091271ee4bf45a84aab51f7ae0da309))
-* updated fancy-test ([a58f942](https://github.com/oclif/oclif/commit/a58f9428e6c7f54873da4f771f665dec4842ecba))
+- bump deps ([#748](https://github.com/oclif/oclif/issues/748)) ([18a42ba](https://github.com/oclif/oclif/commit/18a42ba62dbd165d4ea10f04b755afcf23260b54))
 
+# [2.0.0-main.13](https://github.com/oclif/oclif/compare/v2.0.0-main.12...v2.0.0-main.13) (2021-12-07)
 
+### Bug Fixes
 
-## [1.7.54](https://github.com/oclif/oclif/compare/v1.7.53...v1.7.54) (2018-06-01)
+- bump deps ([#747](https://github.com/oclif/oclif/issues/747)) ([6f61f96](https://github.com/oclif/oclif/commit/6f61f96f123159cb0a9023063c8a949b3fd85a7f))
 
+# [2.0.0-main.12](https://github.com/oclif/oclif/compare/v2.0.0-main.11...v2.0.0-main.12) (2021-12-06)
 
 ### Bug Fixes
 
-* add tslib ([360924a](https://github.com/oclif/oclif/commit/360924ac89a358cbd0d88be47a794243bb9cfd0e))
-* path names for eslint ([64808b3](https://github.com/oclif/oclif/commit/64808b302f741670ac05cae09c774b23c8c4c434))
-* typescript 2.9 ([0774d0f](https://github.com/oclif/oclif/commit/0774d0fd024451198be2145a6280a673b3442477))
+- bump deps ([#735](https://github.com/oclif/oclif/issues/735)) ([e01c9a7](https://github.com/oclif/oclif/commit/e01c9a7ecf5635309eeca694532b9fa6c9b8bb0d))
 
+# [2.0.0-main.11](https://github.com/oclif/oclif/compare/v2.0.0-main.10...v2.0.0-main.11) (2021-12-01)
 
+### Bug Fixes
 
-## [1.7.53](https://github.com/oclif/oclif/compare/v1.7.52...v1.7.53) (2018-05-31)
+- force main build to fix v1 tag/version ([140b581](https://github.com/oclif/oclif/commit/140b5811f018f56e3e26037402887415801f682a))
 
+# [2.0.0-main.10](https://github.com/oclif/oclif/compare/v2.0.0-main.9...v2.0.0-main.10) (2021-11-17)
 
-### Bug Fixes
+### Features
 
-* typescript 2.9 ([3c2b1ea](https://github.com/oclif/oclif/commit/3c2b1ea73c066a81b233eb2366bd72a371c1d177))
+- support darwin-arm tarballs ([#711](https://github.com/oclif/oclif/issues/711)) ([61cb766](https://github.com/oclif/oclif/commit/61cb7664ce38f1b7827ff652f063c3be7adeb1af))
 
+# [2.0.0-main.9](https://github.com/oclif/oclif/compare/v2.0.0-main.8...v2.0.0-main.9) (2021-11-04)
 
+# [2.0.0-main.8](https://github.com/oclif/oclif/compare/v2.0.0-main.7...v2.0.0-main.8) (2021-10-08)
 
-## [1.7.52](https://github.com/oclif/oclif/compare/v1.7.51...v1.7.52) (2018-05-30)
+# [2.0.0-main.7](https://github.com/oclif/oclif/compare/v2.0.0-main.6...v2.0.0-main.7) (2021-10-08)
 
+# [2.0.0-main.6](https://github.com/oclif/oclif/compare/v2.0.0-main.5...v2.0.0-main.6) (2021-10-05)
 
 ### Bug Fixes
 
-* command descriptions not showing up in the help ([#124](https://github.com/oclif/oclif/issues/124)) ([dd37310](https://github.com/oclif/oclif/commit/dd37310b8231cda76fd240fb3b7c329e40acf3ca))
+- bump oclif/core to 1.0.0 ([#687](https://github.com/oclif/oclif/issues/687)) [skip-validate-pr] ([430bb19](https://github.com/oclif/oclif/commit/430bb19068133f3622f660f614e3fa69009cb73c))
 
+### Features
 
+- add generate cmd ([#665](https://github.com/oclif/oclif/issues/665)) ([731ed49](https://github.com/oclif/oclif/commit/731ed490bc3bc1857d414dfd56d0d8dfd7b6be2b))
+- unhide releasing related cmds ([#670](https://github.com/oclif/oclif/issues/670)) ([25ace5f](https://github.com/oclif/oclif/commit/25ace5f0641cbda3bf8ee0c204be8e6a47f187c6))
 
-## [1.7.51](https://github.com/oclif/oclif/compare/v1.7.50...v1.7.51) (2018-05-28)
-
-
-### Bug Fixes
+# [2.0.0-main.5](https://github.com/oclif/oclif/compare/v2.0.0-main.4...v2.0.0-main.5) (2021-09-20)
 
-* updated deps ([ff3efd0](https://github.com/oclif/oclif/commit/ff3efd0093362668bacea035d57eab894f74d732))
+# [2.0.0-main.4](https://github.com/oclif/oclif/compare/v2.0.0-main.3...v2.0.0-main.4) (2021-09-20)
 
+# [2.0.0-main.3](https://github.com/oclif/oclif/compare/v2.0.0-main.2...v2.0.0-main.3) (2021-09-16)
 
+### Bug Fixes
 
-## [1.7.50](https://github.com/oclif/oclif/compare/v1.7.49...v1.7.50) (2018-05-24)
+- use summary field if available ([#667](https://github.com/oclif/oclif/issues/667)) ([60db19f](https://github.com/oclif/oclif/commit/60db19f89b44d451cfd6579f982b6545dec49ee6))
 
+# [2.0.0-main.2](https://github.com/oclif/oclif/compare/v2.0.0-2.0...v2.0.0-main.2) (2021-08-30)
 
 ### Bug Fixes
 
-* add yarn.lock to npm files for plugins ([06f5893](https://github.com/oclif/oclif/commit/06f5893410d8fe5bf3902f0d837d28dd7e279a7d))
+- force build to pickup latest oclif/core ([#648](https://github.com/oclif/oclif/issues/648)) ([4ed1e9a](https://github.com/oclif/oclif/commit/4ed1e9a568a88ef37b51b95f66419cf52e16a3b7))
+- remove context var ([#652](https://github.com/oclif/oclif/issues/652)) ([d8f12fa](https://github.com/oclif/oclif/commit/d8f12faa82566b562cd2c658013a6722e38872fc))
 
+# [2.0.0-main.1](https://github.com/oclif/oclif/compare/v2.0.0-main.0...v2.0.0-main.1) (2021-07-08)
 
+### Bug Fixes
 
-## [1.7.49](https://github.com/oclif/oclif/compare/v1.7.48...v1.7.49) (2018-05-22)
+- throw error if WINDOWS_SIGNING_PASS is not set ([0dc68b0](https://github.com/oclif/oclif/commit/0dc68b09fd7f52719d45440e4faf85782ced9680))
 
+# [2.0.0-main.0](https://github.com/oclif/oclif/compare/v2.0.0-v2.0...v2.0.0-main.0) (2021-07-08)
 
 ### Bug Fixes
 
-* use explicit typeRoot path ([dad2052](https://github.com/oclif/oclif/commit/dad20528d806dc87cae8077bce0dc6ba1dc31b79))
+- change npm tag ([9d07724](https://github.com/oclif/oclif/commit/9d07724cd8b4a200bb6212425311cca2029fa752))
+- prerelease name ([084e890](https://github.com/oclif/oclif/commit/084e8909ea93300a86bf6ddf6319b87a0d3ee5b1))
 
+# [2.0.0-v2.0](https://github.com/oclif/oclif/compare/v1.18.1...v2.0.0-v2.0) (2021-07-08)
 
+### Bug Fixes
 
-## [1.7.48](https://github.com/oclif/oclif/compare/v1.7.47...v1.7.48) (2018-05-22)
+- use @oclif/core for readme/manifest ([#607](https://github.com/oclif/oclif/issues/607)) ([15ade45](https://github.com/oclif/oclif/commit/15ade4596e4888c2e343d81331132e4ded494338))
 
+## [1.18.1](https://github.com/oclif/oclif/compare/v1.18.0...v1.18.1) (2021-07-01)
 
 ### Bug Fixes
 
-* bust circle cache ([7702f90](https://github.com/oclif/oclif/commit/7702f9041c29a4090d294807e75bd63d8f5a56dd))
+- add setup_git script ([35d0920](https://github.com/oclif/oclif/commit/35d0920eae2958d7e9ae394523f06b1f034396ad))
+- move pretarball step ([#617](https://github.com/oclif/oclif/issues/617)) ([cd74340](https://github.com/oclif/oclif/commit/cd743408e5a8fd3e4f7e6effd6ec91adbe1121d4))
+- update config.yml ([97b630c](https://github.com/oclif/oclif/commit/97b630c2d1ac36b1975057fbc18caa420f828981))
+- update release job ([eb05cd5](https://github.com/oclif/oclif/commit/eb05cd5511dfac27617e916aa0415cdb5647f11e))
 
+# [1.18.0](https://github.com/oclif/oclif/compare/v1.17.1...v1.18.0) (2021-05-26)
 
+### Features
 
-## [1.7.47](https://github.com/oclif/oclif/compare/v1.7.46...v1.7.47) (2018-05-22)
+- option to produce sorted index files on version promote ([67e1bae](https://github.com/oclif/oclif/commit/67e1baeeeecc45827feab88af30694d614cc8ce8))
 
+## [1.17.1](https://github.com/oclif/oclif/compare/v1.17.0...v1.17.1) (2021-05-18)
 
 ### Bug Fixes
 
-* updated deps ([1668568](https://github.com/oclif/oclif/commit/16685687ce7dd193c1907731569d5833f5476c76))
+- respect cache on promote ([#578](https://github.com/oclif/oclif/issues/578)) ([8ddd596](https://github.com/oclif/oclif/commit/8ddd596f27586d69876416e4fec6b4ef4cf9740b))
+
+# [1.17.0](https://github.com/oclif/oclif/compare/v1.16.2...v1.17.0) (2021-03-15)
 
+### Features
 
+- add pretarball hook ([#531](https://github.com/oclif/oclif/issues/531)) ([202dfbd](https://github.com/oclif/oclif/commit/202dfbd90a12ccf9ced368cf218799761cfe2813))
 
-## [1.7.46](https://github.com/oclif/oclif/compare/v1.7.45...v1.7.46) (2018-05-14)
+## [1.16.2](https://github.com/oclif/oclif/compare/v1.16.1...v1.16.2) (2021-03-11)
 
+## [1.16.1](https://github.com/oclif/oclif/compare/v1.16.0...v1.16.1) (2020-05-07)
 
 ### Bug Fixes
 
-* updated deps ([6077f5a](https://github.com/oclif/oclif/commit/6077f5a4c5d2d41921e9c73477bd6834f14cd77c))
+- short circuit with nullish coalescing operator ([#327](https://github.com/oclif/oclif/issues/327)) ([de8a7a0](https://github.com/oclif/oclif/commit/de8a7a0cb633cc9bfd34a6eff5374cda24344df8))
 
+# [1.16.0](https://github.com/oclif/oclif/compare/v1.15.2...v1.16.0) (2020-05-07)
 
+### Features
 
-## [1.7.45](https://github.com/oclif/oclif/compare/v1.7.44...v1.7.45) (2018-05-13)
+- create clis with plugin-help v3 ([#343](https://github.com/oclif/oclif/issues/343)) ([a580350](https://github.com/oclif/oclif/commit/a580350a3988f3ebaa76c16180c0afe7fabdc763))
 
+## [1.15.2](https://github.com/oclif/oclif/compare/v1.15.1...v1.15.2) (2019-12-16)
 
 ### Bug Fixes
 
-* flush stdout on exit ([69c0e3e](https://github.com/oclif/oclif/commit/69c0e3e4532b10e27f8c13a3075673a2a6aa2a1b))
+- include dev-cli in single cli generation & run readme ([#296](https://github.com/oclif/oclif/issues/296)) ([fcef7c9](https://github.com/oclif/oclif/commit/fcef7c9def2aeceef603cea2441c5a4e6bbc8972))
 
+## [1.15.1](https://github.com/oclif/oclif/compare/v1.15.0...v1.15.1) (2019-11-19)
 
+### Bug Fixes
 
-## [1.7.44](https://github.com/oclif/oclif/compare/v1.7.43...v1.7.44) (2018-05-11)
-
-
-### Bug Fixes
-
-* move tslib to dependencies ([2e35528](https://github.com/oclif/oclif/commit/2e35528a7e0f32a67230c78029772deca760a07d))
-
-
-
-## [1.7.43](https://github.com/oclif/oclif/compare/v1.7.42...v1.7.43) (2018-05-11)
-
-
-### Bug Fixes
-
-* use author for license ([2b28a35](https://github.com/oclif/oclif/commit/2b28a35d2ab39bf3410dcf9bf65f35c564827e39))
-
-
-
-## [1.7.42](https://github.com/oclif/oclif/compare/v1.7.41...v1.7.42) (2018-05-10)
-
-
-### Bug Fixes
-
-* @typs/node@10 ([e9b6991](https://github.com/oclif/oclif/commit/e9b6991bb0b7fdf2d800977add57a2c4f0ec9624))
-
-
-
-## [1.7.41](https://github.com/oclif/oclif/compare/v1.7.40...v1.7.41) (2018-05-10)
-
-
-### Bug Fixes
-
-* updated deps ([663d802](https://github.com/oclif/oclif/commit/663d80284ab9021d1e9212c06053c80efacd8873))
-
-
-
-## [1.7.40](https://github.com/oclif/oclif/compare/v1.7.39...v1.7.40) (2018-05-07)
-
-
-### Bug Fixes
-
-* ts-node 6 ([98580b1](https://github.com/oclif/oclif/commit/98580b1729606fed0796ccdcaaad767a404925ad))
-
-
-
-## [1.7.39](https://github.com/oclif/oclif/compare/v1.7.38...v1.7.39) (2018-05-07)
-
-
-### Bug Fixes
-
-* use caret versions ([8f582e8](https://github.com/oclif/oclif/commit/8f582e83adad096b329677f9f51f120fcdca6001))
-
-
-
-## [1.7.38](https://github.com/oclif/oclif/compare/v1.7.37...v1.7.38) (2018-05-04)
-
-
-### Bug Fixes
-
-* updated deps ([680381b](https://github.com/oclif/oclif/commit/680381bb8375ef6a0af7db86267b86ff79a53da0))
-
-
-
-## [1.7.37](https://github.com/oclif/oclif/compare/v1.7.36...v1.7.37) (2018-05-03)
-
-
-### Bug Fixes
-
-* rename oclif manifest to not be a dotfile ([84d16a2](https://github.com/oclif/oclif/commit/84d16a21ecabcc89b21a036728f25a23d1da50a5))
-
-
-
-## [1.7.36](https://github.com/oclif/oclif/compare/v1.7.35...v1.7.36) (2018-05-01)
-
-
-### Bug Fixes
-
-* updated deps ([7bc00db](https://github.com/oclif/oclif/commit/7bc00db94bdd9f7efa24b2f12bc4a0a01fa1f2d0))
-
-
-
-## [1.7.35](https://github.com/oclif/oclif/compare/v1.7.34...v1.7.35) (2018-04-21)
-
-
-### Bug Fixes
-
-* updated deps ([e5a8ad7](https://github.com/oclif/oclif/commit/e5a8ad7aed7131aaecc082b20e0f5b3655cad1e4))
-
-
-
-## [1.7.34](https://github.com/oclif/oclif/compare/v1.7.33...v1.7.34) (2018-04-20)
-
-
-### Bug Fixes
-
-* only add root manifest ([e09b530](https://github.com/oclif/oclif/commit/e09b530c76ecd1a5cf937b2a92e1730d0c780352))
-
-
-
-## [1.7.33](https://github.com/oclif/oclif/compare/v1.7.32...v1.7.33) (2018-04-20)
-
-
-### Bug Fixes
-
-* gitignore nyc_output ([270c5ef](https://github.com/oclif/oclif/commit/270c5ef93c1d05d4937b9edd9e826748bcb2ca61))
-
-
-
-## [1.7.32](https://github.com/oclif/oclif/compare/v1.7.31...v1.7.32) (2018-04-18)
-
-
-### Bug Fixes
-
-* use npm instead of yarn in CI scripts when not using yarn ([#108](https://github.com/oclif/oclif/issues/108)) ([04fc972](https://github.com/oclif/oclif/commit/04fc97260750ba144710e243c0404a284141d42d))
-
-
-
-## [1.7.31](https://github.com/oclif/oclif/compare/v1.7.30...v1.7.31) (2018-04-17)
+- nps build step in release ([#306](https://github.com/oclif/oclif/issues/306)) ([1fbf44b](https://github.com/oclif/oclif/commit/1fbf44b15b40adad6c4a61f7d62fff8c4f85fc0a))
 
+# [1.15.0](https://github.com/oclif/oclif/compare/v1.14.2...v1.15.0) (2019-11-19)
 
 ### Bug Fixes
 
-* updated deps ([447acaa](https://github.com/oclif/oclif/commit/447acaaf921c2fb499b9287f8fe22b448655b2b3))
-
+- only use yarn in circle config if selected as option ([#298](https://github.com/oclif/oclif/issues/298)) ([9914b56](https://github.com/oclif/oclif/commit/9914b56bf16bfcdb5e1b4939bf8502652bacfabb))
 
+### Features
 
-## [1.7.30](https://github.com/oclif/oclif/compare/v1.7.29...v1.7.30) (2018-04-10)
+- remove tslint and default to eslint ([#305](https://github.com/oclif/oclif/issues/305)) ([9b188d9](https://github.com/oclif/oclif/commit/9b188d9b87d0218ed8704db4452b9bf5eb3a39e8))
 
+## [1.14.2](https://github.com/oclif/oclif/compare/v1.14.1...v1.14.2) (2019-10-25)
 
 ### Bug Fixes
 
-* break up code coverage into its own step ([0f2ecae](https://github.com/oclif/oclif/commit/0f2ecaec84d0773f8b506feaf4bca05c63304d41))
-
-
-
-## [1.7.29](https://github.com/oclif/oclif/compare/v1.7.28...v1.7.29) (2018-04-10)
+- bump nyc version in generator ([#295](https://github.com/oclif/oclif/issues/295)) ([5fdf1b0](https://github.com/oclif/oclif/commit/5fdf1b0d622d8662d7cd33f975c1730e549e33b2))
 
+## [1.14.1](https://github.com/oclif/oclif/compare/v1.14.0...v1.14.1) (2019-10-22)
 
 ### Bug Fixes
 
-* remove junit reporter from circle ([1927369](https://github.com/oclif/oclif/commit/1927369bcfd62d1ade4bbda7cd8ae32d1331331f))
-
-
+- update oclif deps ([fec3106](https://github.com/oclif/oclif/commit/fec3106ba1fbd4c37fcc5dc97472c9ada549a014))
 
-## [1.7.28](https://github.com/oclif/oclif/compare/v1.7.27...v1.7.28) (2018-04-09)
+# [1.14.0](https://github.com/oclif/oclif/compare/v1.13.6...v1.14.0) (2019-10-07)
 
+## [1.13.6](https://github.com/oclif/oclif/compare/v1.13.5...v1.13.6) (2019-08-28)
 
 ### Bug Fixes
 
-* add another command to multi examples ([3fc97ec](https://github.com/oclif/oclif/commit/3fc97ec33bbbb008b25fd48e4e08b099ff989d64))
-* command example generation ([41c00ca](https://github.com/oclif/oclif/commit/41c00cabef73e10268d3d48b74c875715ef6bc2d))
-
-
-
-## [1.7.27](https://github.com/oclif/oclif/compare/v1.7.26...v1.7.27) (2018-04-09)
+- update README Requirements ([f2bd11e](https://github.com/oclif/oclif/commit/f2bd11ee7d05f4eb3714a6a928c48040af1a4d51))
 
+## [1.13.5](https://github.com/oclif/oclif/compare/v1.13.4...v1.13.5) (2019-07-12)
 
 ### Bug Fixes
 
-* generate readme before packing ([fe9be07](https://github.com/oclif/oclif/commit/fe9be07cf22d70741a5e28a7d5b2c147b18d64ff))
-
-
-
-## [1.7.26](https://github.com/oclif/oclif/compare/v1.7.25...v1.7.26) (2018-04-09)
+- update globby ([#259](https://github.com/oclif/oclif/issues/259)) ([468985e](https://github.com/oclif/oclif/commit/468985edca04831900a69b1bb48498e92b3dc889))
 
+## [1.13.4](https://github.com/oclif/oclif/compare/v1.13.3...v1.13.4) (2019-06-20)
 
 ### Bug Fixes
 
-* add descriptions for circle tasks ([494d6ac](https://github.com/oclif/oclif/commit/494d6ac0e7bb3ccf306578ab47f751d813b122a9))
-
-
-
-## [1.7.25](https://github.com/oclif/oclif/compare/v1.7.24...v1.7.25) (2018-04-09)
+- use correct path separators in travis.yml ([#248](https://github.com/oclif/oclif/issues/248)) ([ec41aa5](https://github.com/oclif/oclif/commit/ec41aa5c97c49257cd8006b2554d671b52de029f))
 
+## [1.13.3](https://github.com/oclif/oclif/compare/v1.13.2...v1.13.3) (2019-06-17)
 
 ### Bug Fixes
 
-* add descriptions for circle tasks ([de4f924](https://github.com/oclif/oclif/commit/de4f9249e1ab2239a7fb55406c0fa05808c42448))
-
-
-
-## [1.7.24](https://github.com/oclif/oclif/compare/v1.7.23...v1.7.24) (2018-04-08)
+- set "composite": false ([#247](https://github.com/oclif/oclif/issues/247)) ([25fde1c](https://github.com/oclif/oclif/commit/25fde1c4ab6a5c36b8f8300831ba9cd5f8b25e41))
 
+## [1.13.2](https://github.com/oclif/oclif/compare/v1.13.1...v1.13.2) (2019-05-29)
 
 ### Bug Fixes
 
-* lock down deps ([ac95a07](https://github.com/oclif/oclif/commit/ac95a07286e902fceed384694a8d56a70d75cb51))
-
-
-
-## [1.7.23](https://github.com/oclif/oclif/compare/v1.7.22...v1.7.23) (2018-04-08)
+- update license template copyright year ([9cfaea8](https://github.com/oclif/oclif/commit/9cfaea817efee4ab759dc3c2d85bd124bd565436))
 
+## [1.13.1](https://github.com/oclif/oclif/compare/v1.13.0...v1.13.1) (2019-03-24)
 
 ### Bug Fixes
 
-* command path on windows ([#96](https://github.com/oclif/oclif/issues/96)) ([612f401](https://github.com/oclif/oclif/commit/612f401aa2f4a4915b2dd46b6f57cc6ceff0e213))
-* ignore any node_modules directories ([ceb13f2](https://github.com/oclif/oclif/commit/ceb13f28369d2651a467ea769d1fdf94731f1111))
-* ignore package-lock.json ([8cb8582](https://github.com/oclif/oclif/commit/8cb8582fc24bf1373292bacd42fcaf03b555bce2))
-* skip eslint files when using typescript ([7dec822](https://github.com/oclif/oclif/commit/7dec822dda4b56e626b078a93c595c45e0b0cc10))
+- test on node 10 ([cf10522](https://github.com/oclif/oclif/commit/cf10522437dfa01d6fb8aeedddf58752db34eb41))
 
+# [1.13.0](https://github.com/oclif/oclif/compare/v1.12.10...v1.13.0) (2019-03-17)
 
+### Features
 
-## [1.7.22](https://github.com/oclif/oclif/compare/v1.7.21...v1.7.22) (2018-04-08)
+- Added Travis CI Support ([#214](https://github.com/oclif/oclif/issues/214)) ([5a9d300](https://github.com/oclif/oclif/commit/5a9d30021749c4eec26516e535cf1d7b058640c3))
 
+## [1.12.10](https://github.com/oclif/oclif/compare/v1.12.9...v1.12.10) (2019-02-12)
 
 ### Bug Fixes
 
-* fixed lint issues ([3048e06](https://github.com/oclif/oclif/commit/3048e069a714ff32c197d3f467e04235c0663e95))
-* remove unneeded script ([016849f](https://github.com/oclif/oclif/commit/016849f9df6bce63aff7faaf4c09aaa5330300d3))
-
-
-
-## [1.7.21](https://github.com/oclif/oclif/compare/v1.7.20...v1.7.21) (2018-04-08)
+- don't include mocha types on no mocha ([#206](https://github.com/oclif/oclif/issues/206)) ([505c43b](https://github.com/oclif/oclif/commit/505c43b2a45cd7ec4e8e0e30e5742d12050f19dc))
 
+## [1.12.9](https://github.com/oclif/oclif/compare/v1.12.8...v1.12.9) (2019-02-11)
 
 ### Bug Fixes
 
-* simplify npm script usage ([8e17b32](https://github.com/oclif/oclif/commit/8e17b321226ff8c05436be6c7ff2cbf897eaece3))
-* simplify npm script usage ([417cd49](https://github.com/oclif/oclif/commit/417cd49b96c5d7ba8a70c078e16c83ed537425eb))
-* use npm pack in test ([7474932](https://github.com/oclif/oclif/commit/74749323dc1e857ea12de995028dcd38e206cd24))
-* use npm pack in test ([1a4de12](https://github.com/oclif/oclif/commit/1a4de12085105a23fe1d31ba50389903e25492d3))
-
-
-
-## [1.7.20](https://github.com/oclif/oclif/compare/v1.7.19...v1.7.20) (2018-04-08)
+- typescript@3.3 ([6ff355f](https://github.com/oclif/oclif/commit/6ff355f010a6c98bab93a053e60d9b61868ab18c))
 
+## [1.12.8](https://github.com/oclif/oclif/compare/v1.12.7...v1.12.8) (2018-12-17)
 
 ### Bug Fixes
 
-* define help flag on initial command ([e1b68a3](https://github.com/oclif/oclif/commit/e1b68a3485198c6116330278864eb333feac12dd))
-
-
-
-## [1.7.19](https://github.com/oclif/oclif/compare/v1.7.18...v1.7.19) (2018-04-07)
+- typescript@3.2 ([#197](https://github.com/oclif/oclif/issues/197)) ([07013c8](https://github.com/oclif/oclif/commit/07013c871e1fc4afee7e72a2c262aaeab19e7675))
 
+## [1.12.7](https://github.com/oclif/oclif/compare/v1.12.6...v1.12.7) (2018-12-03)
 
 ### Bug Fixes
 
-* gitignore /dist ([d0bb4f0](https://github.com/oclif/oclif/commit/d0bb4f0816a5b6d5ca9b7f5b9bff599a51ef8ddf))
-
-
-
-## [1.7.18](https://github.com/oclif/oclif/compare/v1.7.17...v1.7.18) (2018-04-07)
+- updated deps ([ffe8868](https://github.com/oclif/oclif/commit/ffe88680fdb03de2119b15f8e0513acc7d922df3))
 
+## [1.12.6](https://github.com/oclif/oclif/compare/v1.12.5...v1.12.6) (2018-11-14)
 
 ### Bug Fixes
 
-* use posttest instead of lint script ([48516e1](https://github.com/oclif/oclif/commit/48516e15f159fd24e36ab18bad1b1d7968473430))
-
-
-
-## [1.7.17](https://github.com/oclif/oclif/compare/v1.7.16...v1.7.17) (2018-04-06)
+- updated deps ([2ff77ed](https://github.com/oclif/oclif/commit/2ff77ed9f696fa95828f01e4942648d3486859ab))
 
+## [1.12.5](https://github.com/oclif/oclif/compare/v1.12.4...v1.12.5) (2018-10-16)
 
 ### Bug Fixes
 
-* set repository to input ([276ac06](https://github.com/oclif/oclif/commit/276ac06557b788e92107e60a722029cf0954100f))
-
-
-
-## [1.7.16](https://github.com/oclif/oclif/compare/v1.7.15...v1.7.16) (2018-04-06)
+- default to not using shrinkwrap ([902c350](https://github.com/oclif/oclif/commit/902c350cb9b728f2424ecfb3a8497a23485b67c4))
 
+## [1.12.4](https://github.com/oclif/oclif/compare/v1.12.3...v1.12.4) (2018-10-13)
 
 ### Bug Fixes
 
-* remove declarations from test tslint ([3d8181b](https://github.com/oclif/oclif/commit/3d8181ba1d54062e2bfe5c47487720d4e4b49333))
-
-
-
-## [1.7.15](https://github.com/oclif/oclif/compare/v1.7.14...v1.7.15) (2018-04-06)
+- remove greenkeeper badge ([9690390](https://github.com/oclif/oclif/commit/9690390110892af4b3a41e5989b1e5cbba4c2da5))
 
+## [1.12.3](https://github.com/oclif/oclif/compare/v1.12.2...v1.12.3) (2018-10-13)
 
 ### Bug Fixes
 
-* use package-lock.json or yarn.lock from root only ([9cb57ac](https://github.com/oclif/oclif/commit/9cb57acf2f7f64f8a0d7e27c4dd14832631c20de))
-
-
-
-## [1.7.14](https://github.com/oclif/oclif/compare/v1.7.13...v1.7.14) (2018-04-05)
+- prepack ([85c0a36](https://github.com/oclif/oclif/commit/85c0a362591359da7d752f275893a62773bebfa2))
 
+## [1.12.2](https://github.com/oclif/oclif/compare/v1.12.1...v1.12.2) (2018-10-13)
 
 ### Bug Fixes
 
-* ignore package-lock.json or yarn.lock ([e589f0a](https://github.com/oclif/oclif/commit/e589f0a0057782ce20f423499c5d4f52d643030f))
-
-
-
-## [1.7.13](https://github.com/oclif/oclif/compare/v1.7.12...v1.7.13) (2018-04-04)
+- shrinkwrap ([7f86997](https://github.com/oclif/oclif/commit/7f869970b1e9d84de2e8c09b4eb2a6923332169b))
 
+## [1.12.1](https://github.com/oclif/oclif/compare/v1.12.0...v1.12.1) (2018-09-15)
 
 ### Bug Fixes
 
-* fixed commands directory in example ([2d8b964](https://github.com/oclif/oclif/commit/2d8b964a67420048779a92b35436a704fdd9f9ac))
-
-
-
-## [1.7.12](https://github.com/oclif/oclif/compare/v1.7.11...v1.7.12) (2018-04-04)
+- source-map-register is not needed ([dfd3170](https://github.com/oclif/oclif/commit/dfd31701a0aa426c0d3f372de9c350620c0ccd91))
 
+# [1.12.0](https://github.com/oclif/oclif/compare/v1.11.7...v1.12.0) (2018-09-15)
 
 ### Bug Fixes
 
-* only show examples if generating hello command ([147a317](https://github.com/oclif/oclif/commit/147a317758f3dbc0101c5c2770f9cda09b6b6caf))
-* show ts path in example command instead of js path ([12869c4](https://github.com/oclif/oclif/commit/12869c4c0e66f7be8e9b1f70d06de71aa15e0b01))
-
+- break linters out into separate question ([a3edcd4](https://github.com/oclif/oclif/commit/a3edcd469599ca108d72d1898730e7d083d15324))
+- break linters out into separate question ([c8b05f8](https://github.com/oclif/oclif/commit/c8b05f825aebf314b178e3961ff636377ed2f238))
+- break yarn/npm into separate question ([3f80dea](https://github.com/oclif/oclif/commit/3f80dea3b226fb422875fbb1516afcc0aea9f07e))
+- remove unnecessary tsc calls ([85082b5](https://github.com/oclif/oclif/commit/85082b57b532a1cc5fc51d5275bc74c7957eab01))
 
+### Features
 
-## [1.7.11](https://github.com/oclif/oclif/compare/v1.7.10...v1.7.11) (2018-04-02)
+- simplify nyc config ([86a2c52](https://github.com/oclif/oclif/commit/86a2c52735f2082eaf95c058f85b0cde36dc9d1e))
+- use typescript 3.0 project references ([3a9bf0f](https://github.com/oclif/oclif/commit/3a9bf0f866a0a41d9e61b0d461277df1c95e2f94))
 
+## [1.11.7](https://github.com/oclif/oclif/compare/v1.11.6...v1.11.7) (2018-09-14)
 
 ### Bug Fixes
 
-* **generators/command:** assert cwd is a project ([#94](https://github.com/oclif/oclif/issues/94)) ([192f268](https://github.com/oclif/oclif/commit/192f26851cc13ff4da292f06861ea9317f632ba6))
-
-
-
-## [1.7.10](https://github.com/oclif/oclif/compare/v1.7.9...v1.7.10) (2018-03-28)
+- greenkeeper-lockfile no longer necessary ([8f55fd0](https://github.com/oclif/oclif/commit/8f55fd08415146b837267962a82518ac41118867))
 
+## [1.11.6](https://github.com/oclif/oclif/compare/v1.11.5...v1.11.6) (2018-09-14)
 
 ### Bug Fixes
 
-* remove commitlint from this project ([#87](https://github.com/oclif/oclif/issues/87)) ([beb4b4e](https://github.com/oclif/oclif/commit/beb4b4ee29528602305a4e9f61de062c3d80fb85))
-
-
-
-## [1.7.9](https://github.com/oclif/oclif/compare/v1.7.8...v1.7.9) (2018-03-25)
+- updated eslint and tslint ([c2ae997](https://github.com/oclif/oclif/commit/c2ae997e16bdefcb6b7036f63824df4bc9278b30))
 
+## [1.11.5](https://github.com/oclif/oclif/compare/v1.11.4...v1.11.5) (2018-08-29)
 
 ### Bug Fixes
 
-* move release script into semantic-release ([020e633](https://github.com/oclif/oclif/commit/020e633eab2e7133a2526bfef8fe5c6fc54dfb4a))
-
-
-
-## [1.7.8](https://github.com/oclif/oclif/compare/v1.7.7...v1.7.8) (2018-03-25)
+- fixpack -> @oclif/fixpack ([a69c4be](https://github.com/oclif/oclif/commit/a69c4be0c6cd44052a0a850f270aa2cbedca59e0))
+- hide yarn output when not found ([a3897b1](https://github.com/oclif/oclif/commit/a3897b18290b9e3265e4cb25dacec93c26941cd2))
+- set project path for single CLIs ([3ec87bc](https://github.com/oclif/oclif/commit/3ec87bcef150ace5afb0159482e3762482373bdf)), closes [#161](https://github.com/oclif/oclif/issues/161)
+- use @oclif/fixpack to fix audit warning ([0c2aa20](https://github.com/oclif/oclif/commit/0c2aa206e9802112c67c0df2c91ef580e165b274))
 
+## [1.11.4](https://github.com/oclif/oclif/compare/v1.11.3...v1.11.4) (2018-08-22)
 
 ### Bug Fixes
 
-* automate create-oclif publishing ([bffcc90](https://github.com/oclif/oclif/commit/bffcc902704876c3cbfe3cf942e8e5f206c872d9))
-
-
-
-## [1.7.7](https://github.com/oclif/oclif/compare/v1.7.6...v1.7.7) (2018-03-25)
+- updated yeoman and update warning ([deea525](https://github.com/oclif/oclif/commit/deea5254cbdeae23eb0a6d736f1f8797ec04efb6))
 
+## [1.11.3](https://github.com/oclif/oclif/compare/v1.11.2...v1.11.3) (2018-08-22)
 
 ### Bug Fixes
 
-* updated command ([bd7921f](https://github.com/oclif/oclif/commit/bd7921fb700d15d7be0716ea980e4edd35fbaa2b))
-
-
-
-## [1.7.6](https://github.com/oclif/oclif/compare/v1.7.5...v1.7.6) (2018-03-24)
+- update eslint to latest major in generator ([#152](https://github.com/oclif/oclif/issues/152)) ([7d72d21](https://github.com/oclif/oclif/commit/7d72d21e4592094be1d7c70d9e5d29a840e18175))
 
+## [1.11.2](https://github.com/oclif/oclif/compare/v1.11.1...v1.11.2) (2018-08-17)
 
 ### Bug Fixes
 
-* updated config and warn-if-update-available ([db21fca](https://github.com/oclif/oclif/commit/db21fcab9426f322ad642fe04b8b9f072d135354))
-
-
-
-## [1.7.5](https://github.com/oclif/oclif/compare/v1.7.4...v1.7.5) (2018-03-24)
+- use greenkeeper-lockfile@2 ([1e99237](https://github.com/oclif/oclif/commit/1e99237e6ce70e815b018ccb987aaa8f02b5e074))
 
+## [1.11.1](https://github.com/oclif/oclif/compare/v1.11.0...v1.11.1) (2018-08-17)
 
 ### Bug Fixes
 
-* add warning if CLI is out of date ([fa5ed18](https://github.com/oclif/oclif/commit/fa5ed182599da48c2002fecf7feedf241444797c))
-
-
-
-## [1.7.4](https://github.com/oclif/oclif/compare/v1.7.3...v1.7.4) (2018-03-24)
+- updated oclif and dev-cli ([e2adf70](https://github.com/oclif/oclif/commit/e2adf70f3a0a58aa79aa30a9eddf9ceb5c3aa15f))
 
+# [1.11.0](https://github.com/oclif/oclif/compare/v1.10.3...v1.11.0) (2018-08-17)
 
 ### Bug Fixes
 
-* updated plugin-help ([19df489](https://github.com/oclif/oclif/commit/19df489a74e27875e739bbbe680642dd21ab8cda))
-
+- updated oclif ([edd7fd8](https://github.com/oclif/oclif/commit/edd7fd8884c6610ef0b95edf2c6d0e274725d8f6))
 
+### Features
 
-## [1.7.3](https://github.com/oclif/oclif/compare/v1.7.2...v1.7.3) (2018-03-24)
+- typescript 3 and ts-node 7 ([9c58896](https://github.com/oclif/oclif/commit/9c58896a733467474917293ec996a21ff5e14c37))
 
+## [1.10.3](https://github.com/oclif/oclif/compare/v1.10.2...v1.10.3) (2018-08-17)
 
 ### Bug Fixes
 
-* add hook to circle ([a4da315](https://github.com/oclif/oclif/commit/a4da31538acb74eeac8dbd797de35e71398c2ded))
-* fixed hook circle config test ([3f4ab92](https://github.com/oclif/oclif/commit/3f4ab928546aa5bd33c4eccc4b698a3c7b289b81))
-* updated plugin-help ([cb53bb3](https://github.com/oclif/oclif/commit/cb53bb38120a6e3c4db3fbc0cfc349d71722037b))
-
-
-
-## [1.7.2](https://github.com/oclif/oclif/compare/v1.7.1...v1.7.2) (2018-03-24)
+- regenerate readme when adding command ([408705b](https://github.com/oclif/oclif/commit/408705b01ce7a889f18c02d53212df770e057974))
 
+## [1.10.2](https://github.com/oclif/oclif/compare/v1.10.1...v1.10.2) (2018-08-17)
 
 ### Bug Fixes
 
-* add yarn to examples ([b4cd8b3](https://github.com/oclif/oclif/commit/b4cd8b3ce32bf2a4a6af6eb3c3ecdb4ebb4d9259))
-* fixed semantic-release config ([a4f69f1](https://github.com/oclif/oclif/commit/a4f69f1462fc617c515f5c9ec625447ff4198257))
-* update semantic-release ([9f45593](https://github.com/oclif/oclif/commit/9f4559333bb75f9dea690f58235f5528b816059b))
-* update semantic-release ([d2e3159](https://github.com/oclif/oclif/commit/d2e3159233be3841777125ed66c412187460df7e))
-
-
-
-## [1.7.1](https://github.com/oclif/oclif/compare/v1.7.0...v1.7.1) (2018-03-24)
+- generate readme ([185ef6c](https://github.com/oclif/oclif/commit/185ef6c0b3d3cb7fd7a98f7fbe31b2df4c66a2ec))
+- newlines in readme ([5281952](https://github.com/oclif/oclif/commit/5281952ce215564b0c2298c90701406432265f7b))
 
+## [1.10.1](https://github.com/oclif/oclif/compare/v1.10.0...v1.10.1) (2018-08-17)
 
 ### Bug Fixes
 
-* remove commitlint ([#83](https://github.com/oclif/oclif/issues/83)) ([b5c6327](https://github.com/oclif/oclif/commit/b5c6327dac2afe91957c8add54b56ad83c58837d))
-
-
-
-# [1.7.0](https://github.com/oclif/oclif/compare/v1.6.0...v1.7.0) (2018-03-24)
+- add circleci,appveyor,codecov to examples ([5cc3f54](https://github.com/oclif/oclif/commit/5cc3f54e73071ba44ab29a2fc9d97604ed8bbb05))
+- always use --save with npm ([#149](https://github.com/oclif/oclif/issues/149)) ([151af6f](https://github.com/oclif/oclif/commit/151af6f1de188a7673158a05a14f264d200d0d6a))
 
+# [1.10.0](https://github.com/oclif/oclif/compare/v1.9.0...v1.10.0) (2018-08-17)
 
 ### Features
 
-* removes snyk readme template badge ([#80](https://github.com/oclif/oclif/issues/80)) ([7b68361](https://github.com/oclif/oclif/commit/7b683610ea2e5f16d622a0b7ebb6b9d2ee484b07)), closes [oclif/oclif#69](https://github.com/oclif/oclif/issues/69)
-
-
-
-# [1.6.0](https://github.com/oclif/oclif/compare/v1.5.8...v1.6.0) (2018-03-24)
+- make appveyor optional ([#138](https://github.com/oclif/oclif/issues/138)) ([74d17c1](https://github.com/oclif/oclif/commit/74d17c1d20350f740a534f0ca6b4303927450171))
+- make codecov optional ([#139](https://github.com/oclif/oclif/issues/139)) ([30c6aff](https://github.com/oclif/oclif/commit/30c6aff059d6056679214bb3a322c23896d1936c))
+- typescript 3.x ([5badc7a](https://github.com/oclif/oclif/commit/5badc7aca22aa618f30cff6e9cfed9056d94c2db))
 
+# [1.9.0](https://github.com/oclif/oclif/compare/v1.8.6...v1.9.0) (2018-07-09)
 
 ### Features
 
-* removes greenkeeper readme template badge ([#81](https://github.com/oclif/oclif/issues/81)) ([c45448e](https://github.com/oclif/oclif/commit/c45448e97858b789a91f765c631c91c7f8263f9f)), closes [oclif/oclif#70](https://github.com/oclif/oclif/issues/70)
-
-
-
-## [1.5.8](https://github.com/oclif/oclif/compare/v1.5.7...v1.5.8) (2018-03-24)
-
-
-### Bug Fixes
-
-* fix hooks to work with ts-node ([e117a85](https://github.com/oclif/oclif/commit/e117a8559b1ad84c8110df71906ca4c975ab529f)), closes [#78](https://github.com/oclif/oclif/issues/78)
-
-
-
-## [1.5.7](https://github.com/oclif/oclif/compare/v1.5.6...v1.5.7) (2018-03-24)
-
-
-### Bug Fixes
-
-* fixed yarn detection ([214be06](https://github.com/oclif/oclif/commit/214be061c7f17287a12474e0dff4d39cc63e8109))
-
-
-
-## [1.5.6](https://github.com/oclif/oclif/compare/v1.5.5...v1.5.6) (2018-03-24)
+- make circleci optional ([#137](https://github.com/oclif/oclif/issues/137)) ([259d304](https://github.com/oclif/oclif/commit/259d30466b30a7542add620e63128cf0272dd289))
 
+## [1.8.6](https://github.com/oclif/oclif/compare/v1.8.5...v1.8.6) (2018-07-02)
 
 ### Bug Fixes
 
-* updated command/config ([e6446ca](https://github.com/oclif/oclif/commit/e6446ca65238f4ab21f3e30f0391bf4e49cc6f95))
-
-
-
-## [1.5.5](https://github.com/oclif/oclif/compare/v1.5.4...v1.5.5) (2018-03-24)
+- updated deps ([6f71fed](https://github.com/oclif/oclif/commit/6f71fed14b0c38ffe125c0017a1f50c576d40e9d))
 
+## [1.8.5](https://github.com/oclif/oclif/compare/v1.8.4...v1.8.5) (2018-06-16)
 
 ### Bug Fixes
 
-* fixed npm devDependencies ([1957935](https://github.com/oclif/oclif/commit/19579350dadf5007c5155cd9c41834345acb17f3))
-* move globby to devDependencies ([9f07b24](https://github.com/oclif/oclif/commit/9f07b248cc0c481a3b96961a04ec2f511f76268d))
-
-
-
-## [1.5.4](https://github.com/oclif/oclif/compare/v1.5.3...v1.5.4) (2018-03-24)
+- remove shrinkwrap after publishing ([3a1441d](https://github.com/oclif/oclif/commit/3a1441deab5bd58927c51188831be214c02f24f6))
 
+## [1.8.4](https://github.com/oclif/oclif/compare/v1.8.3...v1.8.4) (2018-06-14)
 
 ### Bug Fixes
 
-* @oclif/errors no longer directly required ([c82d5f4](https://github.com/oclif/oclif/commit/c82d5f484a425261cbe28692aabc3c30b5827550))
-
-
-
-## [1.5.3](https://github.com/oclif/oclif/compare/v1.5.2...v1.5.3) (2018-03-24)
+- js setups ([ab161e5](https://github.com/oclif/oclif/commit/ab161e5b60a5d350eb71683e94e0377e23c71b87))
 
+## [1.8.3](https://github.com/oclif/oclif/compare/v1.8.2...v1.8.3) (2018-06-14)
 
 ### Bug Fixes
 
-* updated deps ([367e189](https://github.com/oclif/oclif/commit/367e189144af37df10373e4a20e9d22106e97e29))
-
-
-
-## [1.5.2](https://github.com/oclif/oclif/compare/v1.5.1...v1.5.2) (2018-03-23)
+- add shrinkwrap file ([819e971](https://github.com/oclif/oclif/commit/819e9716f0d9f7be987d14b9919fdaeb68e293dc))
 
+## [1.8.2](https://github.com/oclif/oclif/compare/v1.8.1...v1.8.2) (2018-06-12)
 
 ### Bug Fixes
 
-* updated dev-cli ([90ffc41](https://github.com/oclif/oclif/commit/90ffc41943efe6c0de36d8793097581737c7a5b5))
-
-
-
-## [1.5.1](https://github.com/oclif/oclif/compare/v1.5.0...v1.5.1) (2018-03-23)
+- Add rimraf to devDependencies for single and multi projects and use it in npm scripts ([#123](https://github.com/oclif/oclif/issues/123)) ([764ade1](https://github.com/oclif/oclif/commit/764ade1dfcf99e3de74a9a93dc85cc24e3d927a0))
 
+## [1.8.1](https://github.com/oclif/oclif/compare/v1.8.0...v1.8.1) (2018-06-10)
 
 ### Bug Fixes
 
-* add usage/command headers explicitly ([d24456b](https://github.com/oclif/oclif/commit/d24456ba28f0ea2d4e392dda30a4543a461fc6c5))
-
-
-
-# [1.5.0](https://github.com/oclif/oclif/compare/v1.4.12...v1.5.0) (2018-03-23)
+- updated deps ([50604af](https://github.com/oclif/oclif/commit/50604afbc47202c2d615cc2a878bcd0309400127))
 
+# [1.8.0](https://github.com/oclif/oclif/compare/v1.7.56...v1.8.0) (2018-06-02)
 
 ### Features
 
-* add hook generator ([#77](https://github.com/oclif/oclif/issues/77)) ([4106708](https://github.com/oclif/oclif/commit/4106708e3fa2332fcada0361c76a1071f61315a8))
-
-
-
-## [1.4.12](https://github.com/oclif/oclif/compare/v1.4.11...v1.4.12) (2018-03-23)
-
-
-### Bug Fixes
-
-* document yarn flag ([f833799](https://github.com/oclif/oclif/commit/f8337999b5a22cbe9bfa90a7d7a026a1a15a333b))
-
-
-
-## [1.4.11](https://github.com/oclif/oclif/compare/v1.4.10...v1.4.11) (2018-03-23)
+- add oclif badge ([620707c](https://github.com/oclif/oclif/commit/620707ce80a17f1ba0e4e3e447ad16128b81638a))
 
+## [1.7.56](https://github.com/oclif/oclif/compare/v1.7.55...v1.7.56) (2018-06-01)
 
 ### Bug Fixes
 
-* move docs to oclif.io ([43ebeba](https://github.com/oclif/oclif/commit/43ebebaec031697f7e1595e79771d15c76e11cd6))
-* move docs to oclif.io ([c067401](https://github.com/oclif/oclif/commit/c067401cce09b8f425826c05f11c4266f842bd40))
-
-
-
-## [1.4.10](https://github.com/oclif/oclif/compare/v1.4.9...v1.4.10) (2018-03-22)
+- nyc@12 ([8984592](https://github.com/oclif/oclif/commit/8984592f7b98329b9d3c9ba766f36e4310faee2d))
 
+## [1.7.55](https://github.com/oclif/oclif/compare/v1.7.54...v1.7.55) (2018-06-01)
 
 ### Bug Fixes
 
-* use npm for scripts if not yarn ([01370d2](https://github.com/oclif/oclif/commit/01370d252da66e25b80a2947ec38e4db21101a61))
-
-
-
-## [1.4.9](https://github.com/oclif/oclif/compare/v1.4.7...v1.4.9) (2018-03-22)
+- add prepare step ([dd927fb](https://github.com/oclif/oclif/commit/dd927fb458bc30fc5606c10b12d7cf9f4ec8ba87))
+- remove es module config ([80ef22b](https://github.com/oclif/oclif/commit/80ef22b17bd96247b9d41ad2070e25d1ff3d185d))
+- updated deps ([64a13d1](https://github.com/oclif/oclif/commit/64a13d1ac091271ee4bf45a84aab51f7ae0da309))
+- updated fancy-test ([a58f942](https://github.com/oclif/oclif/commit/a58f9428e6c7f54873da4f771f665dec4842ecba))
 
+## [1.7.54](https://github.com/oclif/oclif/compare/v1.7.53...v1.7.54) (2018-06-01)
 
 ### Bug Fixes
 
-* make yarn optional ([#76](https://github.com/oclif/oclif/issues/76)) ([7157660](https://github.com/oclif/oclif/commit/71576609c182f8fbffbffdf408671c5cb9c4a0b6))
-* only need 1 example ([5ef966f](https://github.com/oclif/oclif/commit/5ef966fc1f4165983c9ff6ca8250e7e5d61c79bf))
-
-
-
-## [1.4.7](https://github.com/oclif/oclif/compare/v1.4.6...v1.4.7) (2018-03-22)
+- add tslib ([360924a](https://github.com/oclif/oclif/commit/360924ac89a358cbd0d88be47a794243bb9cfd0e))
+- path names for eslint ([64808b3](https://github.com/oclif/oclif/commit/64808b302f741670ac05cae09c774b23c8c4c434))
+- typescript 2.9 ([0774d0f](https://github.com/oclif/oclif/commit/0774d0fd024451198be2145a6280a673b3442477))
 
+## [1.7.53](https://github.com/oclif/oclif/compare/v1.7.52...v1.7.53) (2018-05-31)
 
 ### Bug Fixes
 
-* add path argument description ([c37e724](https://github.com/oclif/oclif/commit/c37e72480dcf740dc1ef1708ad09552672238208))
-
-
-
-## [1.4.6](https://github.com/oclif/oclif/compare/v1.4.5...v1.4.6) (2018-03-22)
+- typescript 2.9 ([3c2b1ea](https://github.com/oclif/oclif/commit/3c2b1ea73c066a81b233eb2366bd72a371c1d177))
 
+## [1.7.52](https://github.com/oclif/oclif/compare/v1.7.51...v1.7.52) (2018-05-30)
 
 ### Bug Fixes
 
-* build manifest ([241741a](https://github.com/oclif/oclif/commit/241741aedd890b37be615972da35f02596cde082))
-
-
-
-## [1.4.5](https://github.com/oclif/oclif/compare/v1.4.4...v1.4.5) (2018-03-22)
+- command descriptions not showing up in the help ([#124](https://github.com/oclif/oclif/issues/124)) ([dd37310](https://github.com/oclif/oclif/commit/dd37310b8231cda76fd240fb3b7c329e40acf3ca))
 
+## [1.7.51](https://github.com/oclif/oclif/compare/v1.7.50...v1.7.51) (2018-05-28)
 
 ### Bug Fixes
 
-* set OCLIF_NEXT_VERSION ([032b231](https://github.com/oclif/oclif/commit/032b2319d756e0817f96c6311cbaa3a027f6b0e2))
-
-
-
-## [1.4.4](https://github.com/oclif/oclif/compare/v1.4.3...v1.4.4) (2018-03-22)
+- updated deps ([ff3efd0](https://github.com/oclif/oclif/commit/ff3efd0093362668bacea035d57eab894f74d732))
 
+## [1.7.50](https://github.com/oclif/oclif/compare/v1.7.49...v1.7.50) (2018-05-24)
 
 ### Bug Fixes
 
-* set OCLIF_NEXT_VERSION ([4d774b1](https://github.com/oclif/oclif/commit/4d774b17451c873cb736c8d458b884a4d2916474))
-
-
-
-## [1.4.3](https://github.com/oclif/oclif/compare/v1.4.1...v1.4.3) (2018-03-22)
+- add yarn.lock to npm files for plugins ([06f5893](https://github.com/oclif/oclif/commit/06f5893410d8fe5bf3902f0d837d28dd7e279a7d))
 
+## [1.7.49](https://github.com/oclif/oclif/compare/v1.7.48...v1.7.49) (2018-05-22)
 
 ### Bug Fixes
 
-* updated dev-cli ([f9a733a](https://github.com/oclif/oclif/commit/f9a733a0c78d4f9e2a8a22d3fc7320cf2d978398))
-* updated dev-cli ([c9307e7](https://github.com/oclif/oclif/commit/c9307e7e986a44e5882d29bee5e0ffaca266834b))
-
-
-
-## [1.4.1](https://github.com/oclif/oclif/compare/v1.4.0...v1.4.1) (2018-03-21)
+- use explicit typeRoot path ([dad2052](https://github.com/oclif/oclif/commit/dad20528d806dc87cae8077bce0dc6ba1dc31b79))
 
+## [1.7.48](https://github.com/oclif/oclif/compare/v1.7.47...v1.7.48) (2018-05-22)
 
 ### Bug Fixes
 
-* remove noUnusedLocals and noUnusedParameters as these are checked with tslint ([06e2c46](https://github.com/oclif/oclif/commit/06e2c4615151abf37b30d4ff20b1f9b2e476ace8))
-
-
-
-# [1.4.0](https://github.com/oclif/oclif/compare/v1.3.14...v1.4.0) (2018-03-21)
-
-
-### Features
-
-* add tslint component option ([#63](https://github.com/oclif/oclif/issues/63)) ([e3a7943](https://github.com/oclif/oclif/commit/e3a7943855ffbe96de697541025a90cf59194076))
-
-
-
-## [1.3.14](https://github.com/oclif/oclif/compare/v1.3.13...v1.3.14) (2018-03-21)
+- bust circle cache ([7702f90](https://github.com/oclif/oclif/commit/7702f9041c29a4090d294807e75bd63d8f5a56dd))
 
+## [1.7.47](https://github.com/oclif/oclif/compare/v1.7.46...v1.7.47) (2018-05-22)
 
 ### Bug Fixes
 
-* add -h and -v flags for single ([#62](https://github.com/oclif/oclif/issues/62)) ([009490b](https://github.com/oclif/oclif/commit/009490b5de98bb9e71874abee253eb1be85f38d1))
-
-
-
-## [1.3.13](https://github.com/oclif/oclif/compare/v1.3.12...v1.3.13) (2018-03-21)
+- updated deps ([1668568](https://github.com/oclif/oclif/commit/16685687ce7dd193c1907731569d5833f5476c76))
 
+## [1.7.46](https://github.com/oclif/oclif/compare/v1.7.45...v1.7.46) (2018-05-14)
 
 ### Bug Fixes
 
-* use version long flag for circle test ([#61](https://github.com/oclif/oclif/issues/61)) ([6497188](https://github.com/oclif/oclif/commit/64971883b1df554d06a13a8242694f34c517b1e6))
-
-
-
-## [1.3.12](https://github.com/oclif/oclif/compare/v1.3.11...v1.3.12) (2018-03-21)
+- updated deps ([6077f5a](https://github.com/oclif/oclif/commit/6077f5a4c5d2d41921e9c73477bd6834f14cd77c))
 
+## [1.7.45](https://github.com/oclif/oclif/compare/v1.7.44...v1.7.45) (2018-05-13)
 
 ### Bug Fixes
 
-* readme template ([#60](https://github.com/oclif/oclif/issues/60)) ([d91482b](https://github.com/oclif/oclif/commit/d91482b5a701198d554bde2495be924ece3486cc))
-
-
-
-## [1.3.11](https://github.com/oclif/oclif/compare/v1.3.10...v1.3.11) (2018-03-20)
+- flush stdout on exit ([69c0e3e](https://github.com/oclif/oclif/commit/69c0e3e4532b10e27f8c13a3075673a2a6aa2a1b))
 
+## [1.7.44](https://github.com/oclif/oclif/compare/v1.7.43...v1.7.44) (2018-05-11)
 
 ### Bug Fixes
 
-* bump dependencies ([edacb13](https://github.com/oclif/oclif/commit/edacb134324c59c5a778ff3fd870804800662eeb))
-
-
-
-## [1.3.10](https://github.com/oclif/oclif/compare/v1.3.9...v1.3.10) (2018-03-15)
+- move tslib to dependencies ([2e35528](https://github.com/oclif/oclif/commit/2e35528a7e0f32a67230c78029772deca760a07d))
 
+## [1.7.43](https://github.com/oclif/oclif/compare/v1.7.42...v1.7.43) (2018-05-11)
 
 ### Bug Fixes
 
-* return a promise from yeoman callback style so it actually awaits ([#43](https://github.com/oclif/oclif/issues/43)) ([c22f423](https://github.com/oclif/oclif/commit/c22f423a73ba134afb1087b125413de6fb5a223e))
-
-
-
-## [1.3.9](https://github.com/oclif/oclif/compare/v1.3.8...v1.3.9) (2018-03-08)
+- use author for license ([2b28a35](https://github.com/oclif/oclif/commit/2b28a35d2ab39bf3410dcf9bf65f35c564827e39))
 
+## [1.7.42](https://github.com/oclif/oclif/compare/v1.7.41...v1.7.42) (2018-05-10)
 
 ### Bug Fixes
 
-* add component descriptions and option to skip ([25cf71e](https://github.com/oclif/oclif/commit/25cf71ede5a8235a70a1c54eedd5c23a971df003))
-
-
-
-## [1.3.8](https://github.com/oclif/oclif/compare/v1.3.7...v1.3.8) (2018-02-28)
+- @typs/node@10 ([e9b6991](https://github.com/oclif/oclif/commit/e9b6991bb0b7fdf2d800977add57a2c4f0ec9624))
 
+## [1.7.41](https://github.com/oclif/oclif/compare/v1.7.40...v1.7.41) (2018-05-10)
 
 ### Bug Fixes
 
-* fixed ts-node compatibility ([a45f405](https://github.com/oclif/oclif/commit/a45f4058f9492d8c7cb7cf4a6906a709b34165e9))
-
-
-
-## [1.3.7](https://github.com/oclif/oclif/compare/v1.3.6...v1.3.7) (2018-02-17)
+- updated deps ([663d802](https://github.com/oclif/oclif/commit/663d80284ab9021d1e9212c06053c80efacd8873))
 
+## [1.7.40](https://github.com/oclif/oclif/compare/v1.7.39...v1.7.40) (2018-05-07)
 
 ### Bug Fixes
 
-* updated help ([0d6ab82](https://github.com/oclif/oclif/commit/0d6ab82e4db4f99e28273af25425fc9f3919334d))
-
-
-
-## [1.3.6](https://github.com/oclif/oclif/compare/v1.3.5...v1.3.6) (2018-02-17)
+- ts-node 6 ([98580b1](https://github.com/oclif/oclif/commit/98580b1729606fed0796ccdcaaad767a404925ad))
 
+## [1.7.39](https://github.com/oclif/oclif/compare/v1.7.38...v1.7.39) (2018-05-07)
 
 ### Bug Fixes
 
-* show full path to file ([c9741f7](https://github.com/oclif/oclif/commit/c9741f7ac908f44d963dadda9c19aa1a50fd0ad6))
-
-
-
-## [1.3.5](https://github.com/oclif/oclif/compare/v1.3.4...v1.3.5) (2018-02-17)
+- use caret versions ([8f582e8](https://github.com/oclif/oclif/commit/8f582e83adad096b329677f9f51f120fcdca6001))
 
+## [1.7.38](https://github.com/oclif/oclif/compare/v1.7.37...v1.7.38) (2018-05-04)
 
 ### Bug Fixes
 
-* updated command ([3ffd29a](https://github.com/oclif/oclif/commit/3ffd29af6122becb6f9006df364c5092ef9fad08))
-
-
-
-## [1.3.4](https://github.com/oclif/oclif/compare/v1.3.3...v1.3.4) (2018-02-15)
+- updated deps ([680381b](https://github.com/oclif/oclif/commit/680381bb8375ef6a0af7db86267b86ff79a53da0))
 
+## [1.7.37](https://github.com/oclif/oclif/compare/v1.7.36...v1.7.37) (2018-05-03)
 
 ### Bug Fixes
 
-* updated dev-cli ([8359976](https://github.com/oclif/oclif/commit/8359976eda2665452ecb138291355444ab699809))
-
-
-
-## [1.3.3](https://github.com/oclif/oclif/compare/v1.3.2...v1.3.3) (2018-02-15)
+- rename oclif manifest to not be a dotfile ([84d16a2](https://github.com/oclif/oclif/commit/84d16a21ecabcc89b21a036728f25a23d1da50a5))
 
+## [1.7.36](https://github.com/oclif/oclif/compare/v1.7.35...v1.7.36) (2018-05-01)
 
 ### Bug Fixes
 
-* updated dev-cli ([1d890f6](https://github.com/oclif/oclif/commit/1d890f6ed224134ef7bf549d0a6ab34aaa49ae78))
+- updated deps ([7bc00db](https://github.com/oclif/oclif/commit/7bc00db94bdd9f7efa24b2f12bc4a0a01fa1f2d0))
 
+## [1.7.35](https://github.com/oclif/oclif/compare/v1.7.34...v1.7.35) (2018-04-21)
 
+### Bug Fixes
 
-## [1.3.2](https://github.com/oclif/oclif/compare/v1.3.1...v1.3.2) (2018-02-15)
+- updated deps ([e5a8ad7](https://github.com/oclif/oclif/commit/e5a8ad7aed7131aaecc082b20e0f5b3655cad1e4))
 
+## [1.7.34](https://github.com/oclif/oclif/compare/v1.7.33...v1.7.34) (2018-04-20)
 
 ### Bug Fixes
 
-* add emojis to readme ([fb7765c](https://github.com/oclif/oclif/commit/fb7765cf6e6aee9be110eab94e596cdc85c323dc))
+- only add root manifest ([e09b530](https://github.com/oclif/oclif/commit/e09b530c76ecd1a5cf937b2a92e1730d0c780352))
 
+## [1.7.33](https://github.com/oclif/oclif/compare/v1.7.32...v1.7.33) (2018-04-20)
 
+### Bug Fixes
 
-## [1.3.1](https://github.com/oclif/oclif/compare/v1.3.0...v1.3.1) (2018-02-15)
+- gitignore nyc_output ([270c5ef](https://github.com/oclif/oclif/commit/270c5ef93c1d05d4937b9edd9e826748bcb2ca61))
 
+## [1.7.32](https://github.com/oclif/oclif/compare/v1.7.31...v1.7.32) (2018-04-18)
 
 ### Bug Fixes
 
-* updated dev-cli ([dc18085](https://github.com/oclif/oclif/commit/dc18085b5c99a9df0d92f96c8df85aada98fb951))
-* use shield style for circle ([6bb89b6](https://github.com/oclif/oclif/commit/6bb89b6e1ce6f17c1a57c6671c1df4178b595da8))
-* use shield style for circle ([d0533a6](https://github.com/oclif/oclif/commit/d0533a66a4522d448676b134090ef09cecc2c45c))
+- use npm instead of yarn in CI scripts when not using yarn ([#108](https://github.com/oclif/oclif/issues/108)) ([04fc972](https://github.com/oclif/oclif/commit/04fc97260750ba144710e243c0404a284141d42d))
 
+## [1.7.31](https://github.com/oclif/oclif/compare/v1.7.30...v1.7.31) (2018-04-17)
 
+### Bug Fixes
 
-# [1.3.0](https://github.com/oclif/oclif/compare/v1.2.14...v1.3.0) (2018-02-15)
+- updated deps ([447acaa](https://github.com/oclif/oclif/commit/447acaaf921c2fb499b9287f8fe22b448655b2b3))
 
+## [1.7.30](https://github.com/oclif/oclif/compare/v1.7.29...v1.7.30) (2018-04-10)
 
-### Features
+### Bug Fixes
 
-* add LICENSE if salesforce repo + mit ([17f4b2a](https://github.com/oclif/oclif/commit/17f4b2a47249c8568bf4e0e65961b01d5461cb8e))
-* add LICENSE if salesforce repo + mit ([94847e5](https://github.com/oclif/oclif/commit/94847e5ace0e9e0c6f8e86aa9ceb92c421952684))
+- break up code coverage into its own step ([0f2ecae](https://github.com/oclif/oclif/commit/0f2ecaec84d0773f8b506feaf4bca05c63304d41))
 
+## [1.7.29](https://github.com/oclif/oclif/compare/v1.7.28...v1.7.29) (2018-04-10)
 
-### Reverts
+### Bug Fixes
 
-* Revert "chore: add nyc" ([4150a7b](https://github.com/oclif/oclif/commit/4150a7bc05707a58942f51a8c94bf514ee5bbe6d))
+- remove junit reporter from circle ([1927369](https://github.com/oclif/oclif/commit/1927369bcfd62d1ade4bbda7cd8ae32d1331331f))
 
+## [1.7.28](https://github.com/oclif/oclif/compare/v1.7.27...v1.7.28) (2018-04-09)
 
+### Bug Fixes
 
-## [1.2.14](https://github.com/oclif/oclif/compare/v1.2.12...v1.2.14) (2018-02-15)
+- add another command to multi examples ([3fc97ec](https://github.com/oclif/oclif/commit/3fc97ec33bbbb008b25fd48e4e08b099ff989d64))
+- command example generation ([41c00ca](https://github.com/oclif/oclif/commit/41c00cabef73e10268d3d48b74c875715ef6bc2d))
 
+## [1.7.27](https://github.com/oclif/oclif/compare/v1.7.26...v1.7.27) (2018-04-09)
 
 ### Bug Fixes
 
-* fixed node version check ([c4de729](https://github.com/oclif/oclif/commit/c4de729b1570ef0f3e544693c94ca008ff4557f8))
-* updated dev-cli ([59e3e32](https://github.com/oclif/oclif/commit/59e3e32f39f251414f10224cfe49c5f2bee44090))
+- generate readme before packing ([fe9be07](https://github.com/oclif/oclif/commit/fe9be07cf22d70741a5e28a7d5b2c147b18d64ff))
 
+## [1.7.26](https://github.com/oclif/oclif/compare/v1.7.25...v1.7.26) (2018-04-09)
 
+### Bug Fixes
 
-## [1.2.12](https://github.com/oclif/oclif/compare/v1.2.11...v1.2.12) (2018-02-15)
+- add descriptions for circle tasks ([494d6ac](https://github.com/oclif/oclif/commit/494d6ac0e7bb3ccf306578ab47f751d813b122a9))
 
+## [1.7.25](https://github.com/oclif/oclif/compare/v1.7.24...v1.7.25) (2018-04-09)
 
 ### Bug Fixes
 
-* fixed repo link ([dddd420](https://github.com/oclif/oclif/commit/dddd42000930bfb37a2d573042863cdbe96e1613))
+- add descriptions for circle tasks ([de4f924](https://github.com/oclif/oclif/commit/de4f9249e1ab2239a7fb55406c0fa05808c42448))
 
+## [1.7.24](https://github.com/oclif/oclif/compare/v1.7.23...v1.7.24) (2018-04-08)
 
+### Bug Fixes
 
-## [1.2.11](https://github.com/oclif/oclif/compare/v1.2.10...v1.2.11) (2018-02-15)
+- lock down deps ([ac95a07](https://github.com/oclif/oclif/commit/ac95a07286e902fceed384694a8d56a70d75cb51))
 
+## [1.7.23](https://github.com/oclif/oclif/compare/v1.7.22...v1.7.23) (2018-04-08)
 
 ### Bug Fixes
 
-* readme improvements ([f1829b7](https://github.com/oclif/oclif/commit/f1829b73960bacd99efe1668a9e93bf23e578e62))
+- command path on windows ([#96](https://github.com/oclif/oclif/issues/96)) ([612f401](https://github.com/oclif/oclif/commit/612f401aa2f4a4915b2dd46b6f57cc6ceff0e213))
+- ignore any node_modules directories ([ceb13f2](https://github.com/oclif/oclif/commit/ceb13f28369d2651a467ea769d1fdf94731f1111))
+- ignore package-lock.json ([8cb8582](https://github.com/oclif/oclif/commit/8cb8582fc24bf1373292bacd42fcaf03b555bce2))
+- skip eslint files when using typescript ([7dec822](https://github.com/oclif/oclif/commit/7dec822dda4b56e626b078a93c595c45e0b0cc10))
 
+## [1.7.22](https://github.com/oclif/oclif/compare/v1.7.21...v1.7.22) (2018-04-08)
 
+### Bug Fixes
 
-## [1.2.10](https://github.com/oclif/oclif/compare/v1.2.9...v1.2.10) (2018-02-15)
+- fixed lint issues ([3048e06](https://github.com/oclif/oclif/commit/3048e069a714ff32c197d3f467e04235c0663e95))
+- remove unneeded script ([016849f](https://github.com/oclif/oclif/commit/016849f9df6bce63aff7faaf4c09aaa5330300d3))
 
+## [1.7.21](https://github.com/oclif/oclif/compare/v1.7.20...v1.7.21) (2018-04-08)
 
 ### Bug Fixes
 
-* updated dev-cli ([bbfac28](https://github.com/oclif/oclif/commit/bbfac28675d71d64cfd8ab037856b7963555830c))
+- simplify npm script usage ([8e17b32](https://github.com/oclif/oclif/commit/8e17b321226ff8c05436be6c7ff2cbf897eaece3))
+- simplify npm script usage ([417cd49](https://github.com/oclif/oclif/commit/417cd49b96c5d7ba8a70c078e16c83ed537425eb))
+- use npm pack in test ([7474932](https://github.com/oclif/oclif/commit/74749323dc1e857ea12de995028dcd38e206cd24))
+- use npm pack in test ([1a4de12](https://github.com/oclif/oclif/commit/1a4de12085105a23fe1d31ba50389903e25492d3))
 
+## [1.7.20](https://github.com/oclif/oclif/compare/v1.7.19...v1.7.20) (2018-04-08)
 
+### Bug Fixes
 
-## [1.2.9](https://github.com/oclif/oclif/compare/v1.2.8...v1.2.9) (2018-02-15)
+- define help flag on initial command ([e1b68a3](https://github.com/oclif/oclif/commit/e1b68a3485198c6116330278864eb333feac12dd))
 
+## [1.7.19](https://github.com/oclif/oclif/compare/v1.7.18...v1.7.19) (2018-04-07)
 
 ### Bug Fixes
 
-* improve docs ([cc5fd9b](https://github.com/oclif/oclif/commit/cc5fd9bebd22c10810622feefe21b7c8e3703225))
+- gitignore /dist ([d0bb4f0](https://github.com/oclif/oclif/commit/d0bb4f0816a5b6d5ca9b7f5b9bff599a51ef8ddf))
 
+## [1.7.18](https://github.com/oclif/oclif/compare/v1.7.17...v1.7.18) (2018-04-07)
 
+### Bug Fixes
 
-## [1.2.8](https://github.com/oclif/oclif/compare/v1.2.7...v1.2.8) (2018-02-15)
+- use posttest instead of lint script ([48516e1](https://github.com/oclif/oclif/commit/48516e15f159fd24e36ab18bad1b1d7968473430))
 
+## [1.7.17](https://github.com/oclif/oclif/compare/v1.7.16...v1.7.17) (2018-04-06)
 
 ### Bug Fixes
 
-* use github for snyk ([842fa27](https://github.com/oclif/oclif/commit/842fa2723d9026a4d9dd6d52194a989c0b30ae7a))
+- set repository to input ([276ac06](https://github.com/oclif/oclif/commit/276ac06557b788e92107e60a722029cf0954100f))
 
+## [1.7.16](https://github.com/oclif/oclif/compare/v1.7.15...v1.7.16) (2018-04-06)
 
+### Bug Fixes
 
-## [1.2.7](https://github.com/oclif/oclif/compare/v1.2.6...v1.2.7) (2018-02-15)
+- remove declarations from test tslint ([3d8181b](https://github.com/oclif/oclif/commit/3d8181ba1d54062e2bfe5c47487720d4e4b49333))
 
+## [1.7.15](https://github.com/oclif/oclif/compare/v1.7.14...v1.7.15) (2018-04-06)
 
 ### Bug Fixes
 
-* doc improvements ([9ebd831](https://github.com/oclif/oclif/commit/9ebd831e24626f9a886614b413c75a8f4ad55c28))
-* updated dev-cli ([32ca869](https://github.com/oclif/oclif/commit/32ca869f48afcda131db592f9dc6a6a5cd30e193))
+- use package-lock.json or yarn.lock from root only ([9cb57ac](https://github.com/oclif/oclif/commit/9cb57acf2f7f64f8a0d7e27c4dd14832631c20de))
 
+## [1.7.14](https://github.com/oclif/oclif/compare/v1.7.13...v1.7.14) (2018-04-05)
 
+### Bug Fixes
 
-## [1.2.6](https://github.com/oclif/oclif/compare/v1.2.5...v1.2.6) (2018-02-15)
+- ignore package-lock.json or yarn.lock ([e589f0a](https://github.com/oclif/oclif/commit/e589f0a0057782ce20f423499c5d4f52d643030f))
 
+## [1.7.13](https://github.com/oclif/oclif/compare/v1.7.12...v1.7.13) (2018-04-04)
 
 ### Bug Fixes
 
-* updated deps ([6bf6fcd](https://github.com/oclif/oclif/commit/6bf6fcd9ac7e7271c225fef36b3ab91baac14a82))
+- fixed commands directory in example ([2d8b964](https://github.com/oclif/oclif/commit/2d8b964a67420048779a92b35436a704fdd9f9ac))
 
+## [1.7.12](https://github.com/oclif/oclif/compare/v1.7.11...v1.7.12) (2018-04-04)
 
+### Bug Fixes
 
-## [1.2.5](https://github.com/oclif/oclif/compare/v1.2.4...v1.2.5) (2018-02-14)
+- only show examples if generating hello command ([147a317](https://github.com/oclif/oclif/commit/147a317758f3dbc0101c5c2770f9cda09b6b6caf))
+- show ts path in example command instead of js path ([12869c4](https://github.com/oclif/oclif/commit/12869c4c0e66f7be8e9b1f70d06de71aa15e0b01))
 
+## [1.7.11](https://github.com/oclif/oclif/compare/v1.7.10...v1.7.11) (2018-04-02)
 
 ### Bug Fixes
 
-* run version command ([7997c86](https://github.com/oclif/oclif/commit/7997c864efc2e04f62a95838f73e9967a8d8e0a5))
+- **generators/command:** assert cwd is a project ([#94](https://github.com/oclif/oclif/issues/94)) ([192f268](https://github.com/oclif/oclif/commit/192f26851cc13ff4da292f06861ea9317f632ba6))
 
+## [1.7.10](https://github.com/oclif/oclif/compare/v1.7.9...v1.7.10) (2018-03-28)
 
+### Bug Fixes
 
-## [1.2.4](https://github.com/oclif/oclif/compare/v1.2.3...v1.2.4) (2018-02-14)
+- remove commitlint from this project ([#87](https://github.com/oclif/oclif/issues/87)) ([beb4b4e](https://github.com/oclif/oclif/commit/beb4b4ee29528602305a4e9f61de062c3d80fb85))
 
+## [1.7.9](https://github.com/oclif/oclif/compare/v1.7.8...v1.7.9) (2018-03-25)
 
 ### Bug Fixes
 
-* docs ([6f858e4](https://github.com/oclif/oclif/commit/6f858e466b938c9c09865e35c9cd579ba2a030cb))
+- move release script into semantic-release ([020e633](https://github.com/oclif/oclif/commit/020e633eab2e7133a2526bfef8fe5c6fc54dfb4a))
 
+## [1.7.8](https://github.com/oclif/oclif/compare/v1.7.7...v1.7.8) (2018-03-25)
 
+### Bug Fixes
 
-## [1.2.3](https://github.com/oclif/oclif/compare/v1.2.2...v1.2.3) (2018-02-14)
+- automate create-oclif publishing ([bffcc90](https://github.com/oclif/oclif/commit/bffcc902704876c3cbfe3cf942e8e5f206c872d9))
 
+## [1.7.7](https://github.com/oclif/oclif/compare/v1.7.6...v1.7.7) (2018-03-25)
 
 ### Bug Fixes
 
-* add docs ([e6d3dab](https://github.com/oclif/oclif/commit/e6d3dab41a4abb18269ffe30fad2e43b42f3b18d))
-* add docs ([f314205](https://github.com/oclif/oclif/commit/f3142056c0c00ae1b38d21968edc17202b3bc582))
-* updated readme links ([1171d36](https://github.com/oclif/oclif/commit/1171d36e5984234c2e964857ebd4f168792726d5))
+- updated command ([bd7921f](https://github.com/oclif/oclif/commit/bd7921fb700d15d7be0716ea980e4edd35fbaa2b))
 
+## [1.7.6](https://github.com/oclif/oclif/compare/v1.7.5...v1.7.6) (2018-03-24)
 
+### Bug Fixes
 
-## [1.2.2](https://github.com/oclif/oclif/compare/v1.2.1...v1.2.2) (2018-02-14)
+- updated config and warn-if-update-available ([db21fca](https://github.com/oclif/oclif/commit/db21fcab9426f322ad642fe04b8b9f072d135354))
 
+## [1.7.5](https://github.com/oclif/oclif/compare/v1.7.4...v1.7.5) (2018-03-24)
 
 ### Bug Fixes
 
-* doc improvements ([c2b8476](https://github.com/oclif/oclif/commit/c2b8476dd87eade0330fd87576705833462db597))
+- add warning if CLI is out of date ([fa5ed18](https://github.com/oclif/oclif/commit/fa5ed182599da48c2002fecf7feedf241444797c))
 
+## [1.7.4](https://github.com/oclif/oclif/compare/v1.7.3...v1.7.4) (2018-03-24)
 
+### Bug Fixes
 
-## [1.2.1](https://github.com/oclif/oclif/compare/v1.2.0...v1.2.1) (2018-02-14)
+- updated plugin-help ([19df489](https://github.com/oclif/oclif/commit/19df489a74e27875e739bbbe680642dd21ab8cda))
 
+## [1.7.3](https://github.com/oclif/oclif/compare/v1.7.2...v1.7.3) (2018-03-24)
 
 ### Bug Fixes
 
-* doc improvements ([740c0d7](https://github.com/oclif/oclif/commit/740c0d75f64ef09e9e88158bf42e31d3cea49c5d))
+- add hook to circle ([a4da315](https://github.com/oclif/oclif/commit/a4da31538acb74eeac8dbd797de35e71398c2ded))
+- fixed hook circle config test ([3f4ab92](https://github.com/oclif/oclif/commit/3f4ab928546aa5bd33c4eccc4b698a3c7b289b81))
+- updated plugin-help ([cb53bb3](https://github.com/oclif/oclif/commit/cb53bb38120a6e3c4db3fbc0cfc349d71722037b))
 
+## [1.7.2](https://github.com/oclif/oclif/compare/v1.7.1...v1.7.2) (2018-03-24)
 
+### Bug Fixes
 
-# [1.2.0](https://github.com/oclif/oclif/compare/v1.1.2...v1.2.0) (2018-02-14)
+- add yarn to examples ([b4cd8b3](https://github.com/oclif/oclif/commit/b4cd8b3ce32bf2a4a6af6eb3c3ecdb4ebb4d9259))
+- fixed semantic-release config ([a4f69f1](https://github.com/oclif/oclif/commit/a4f69f1462fc617c515f5c9ec625447ff4198257))
+- update semantic-release ([9f45593](https://github.com/oclif/oclif/commit/9f4559333bb75f9dea690f58235f5528b816059b))
+- update semantic-release ([d2e3159](https://github.com/oclif/oclif/commit/d2e3159233be3841777125ed66c412187460df7e))
 
+## [1.7.1](https://github.com/oclif/oclif/compare/v1.7.0...v1.7.1) (2018-03-24)
 
 ### Bug Fixes
 
-* set bin for plugins ([c8d0f11](https://github.com/oclif/oclif/commit/c8d0f11cb67b4abf4c1bb1744b58bb45317e538c))
+- remove commitlint ([#83](https://github.com/oclif/oclif/issues/83)) ([b5c6327](https://github.com/oclif/oclif/commit/b5c6327dac2afe91957c8add54b56ad83c58837d))
 
+# [1.7.0](https://github.com/oclif/oclif/compare/v1.6.0...v1.7.0) (2018-03-24)
 
 ### Features
 
-* added readme toc ([2cdba83](https://github.com/oclif/oclif/commit/2cdba835bbee7039ccc7f2c225827878871caee1))
+- removes snyk readme template badge ([#80](https://github.com/oclif/oclif/issues/80)) ([7b68361](https://github.com/oclif/oclif/commit/7b683610ea2e5f16d622a0b7ebb6b9d2ee484b07)), closes [oclif/oclif#69](https://github.com/oclif/oclif/issues/69)
 
+# [1.6.0](https://github.com/oclif/oclif/compare/v1.5.8...v1.6.0) (2018-03-24)
 
+### Features
 
-## [1.1.2](https://github.com/oclif/oclif/compare/v1.1.1...v1.1.2) (2018-02-14)
+- removes greenkeeper readme template badge ([#81](https://github.com/oclif/oclif/issues/81)) ([c45448e](https://github.com/oclif/oclif/commit/c45448e97858b789a91f765c631c91c7f8263f9f)), closes [oclif/oclif#70](https://github.com/oclif/oclif/issues/70)
 
+## [1.5.8](https://github.com/oclif/oclif/compare/v1.5.7...v1.5.8) (2018-03-24)
 
 ### Bug Fixes
 
-* automatically replace readme on generation ([65b831c](https://github.com/oclif/oclif/commit/65b831cdf4e3c85748f7a2b71331d37961087be9))
+- fix hooks to work with ts-node ([e117a85](https://github.com/oclif/oclif/commit/e117a8559b1ad84c8110df71906ca4c975ab529f)), closes [#78](https://github.com/oclif/oclif/issues/78)
 
+## [1.5.7](https://github.com/oclif/oclif/compare/v1.5.6...v1.5.7) (2018-03-24)
 
+### Bug Fixes
 
-## [1.1.1](https://github.com/oclif/oclif/compare/v1.1.0...v1.1.1) (2018-02-14)
+- fixed yarn detection ([214be06](https://github.com/oclif/oclif/commit/214be061c7f17287a12474e0dff4d39cc63e8109))
 
+## [1.5.6](https://github.com/oclif/oclif/compare/v1.5.5...v1.5.6) (2018-03-24)
 
 ### Bug Fixes
 
-* fixed lint issue ([218101c](https://github.com/oclif/oclif/commit/218101cb0c3124a5676ea22b05cf4b4defeb0208))
-* move nps-utils to deps ([52c0012](https://github.com/oclif/oclif/commit/52c0012f302bbedb0b29de84914feec1e82c325a))
-* remove unused title ([234d83a](https://github.com/oclif/oclif/commit/234d83a2226179e7891011e2eb769c71881a46ad))
+- updated command/config ([e6446ca](https://github.com/oclif/oclif/commit/e6446ca65238f4ab21f3e30f0391bf4e49cc6f95))
 
+## [1.5.5](https://github.com/oclif/oclif/compare/v1.5.4...v1.5.5) (2018-03-24)
 
+### Bug Fixes
 
-# [1.1.0](https://github.com/oclif/oclif/compare/v1.0.6...v1.1.0) (2018-02-13)
+- fixed npm devDependencies ([1957935](https://github.com/oclif/oclif/commit/19579350dadf5007c5155cd9c41834345acb17f3))
+- move globby to devDependencies ([9f07b24](https://github.com/oclif/oclif/commit/9f07b248cc0c481a3b96961a04ec2f511f76268d))
 
+## [1.5.4](https://github.com/oclif/oclif/compare/v1.5.3...v1.5.4) (2018-03-24)
 
-### Features
+### Bug Fixes
 
-* add readme content ([12af0a7](https://github.com/oclif/oclif/commit/12af0a7fe82da6c5b7e38b3e9505e218e51f565d))
+- @oclif/errors no longer directly required ([c82d5f4](https://github.com/oclif/oclif/commit/c82d5f484a425261cbe28692aabc3c30b5827550))
 
+## [1.5.3](https://github.com/oclif/oclif/compare/v1.5.2...v1.5.3) (2018-03-24)
 
+### Bug Fixes
 
-## [1.0.6](https://github.com/oclif/oclif/compare/v1.0.5...v1.0.6) (2018-02-13)
+- updated deps ([367e189](https://github.com/oclif/oclif/commit/367e189144af37df10373e4a20e9d22106e97e29))
 
+## [1.5.2](https://github.com/oclif/oclif/compare/v1.5.1...v1.5.2) (2018-03-23)
 
 ### Bug Fixes
 
-* make linter happy ([c344697](https://github.com/oclif/oclif/commit/c3446976042b13715d7e3c4c2b07804f6fea81c1))
-* updated deps ([2b8fa8a](https://github.com/oclif/oclif/commit/2b8fa8a19b7ab3f94a0b6164ea3e3ff5bfd3b10b))
+- updated dev-cli ([90ffc41](https://github.com/oclif/oclif/commit/90ffc41943efe6c0de36d8793097581737c7a5b5))
 
+## [1.5.1](https://github.com/oclif/oclif/compare/v1.5.0...v1.5.1) (2018-03-23)
 
+### Bug Fixes
 
-## [1.0.5](https://github.com/oclif/oclif/compare/v1.0.4...v1.0.5) (2018-02-13)
+- add usage/command headers explicitly ([d24456b](https://github.com/oclif/oclif/commit/d24456ba28f0ea2d4e392dda30a4543a461fc6c5))
 
+# [1.5.0](https://github.com/oclif/oclif/compare/v1.4.12...v1.5.0) (2018-03-23)
 
-### Bug Fixes
+### Features
 
-* use v1 of nyc-config ([17f19f2](https://github.com/oclif/oclif/commit/17f19f2e9b37dfd62f51f15cbdf542158ace16d8))
+- add hook generator ([#77](https://github.com/oclif/oclif/issues/77)) ([4106708](https://github.com/oclif/oclif/commit/4106708e3fa2332fcada0361c76a1071f61315a8))
 
+## [1.4.12](https://github.com/oclif/oclif/compare/v1.4.11...v1.4.12) (2018-03-23)
 
+### Bug Fixes
 
-## [1.0.4](https://github.com/oclif/oclif/compare/v1.0.2...v1.0.4) (2018-02-13)
+- document yarn flag ([f833799](https://github.com/oclif/oclif/commit/f8337999b5a22cbe9bfa90a7d7a026a1a15a333b))
 
+## [1.4.11](https://github.com/oclif/oclif/compare/v1.4.10...v1.4.11) (2018-03-23)
 
 ### Bug Fixes
 
-* improve message ([7e918c9](https://github.com/oclif/oclif/commit/7e918c9d6a503d0ff1a8a262a545d0a2f3588478))
-* use v1 of nyc-config ([5c832ff](https://github.com/oclif/oclif/commit/5c832ff35260be26461fc15bd40a8b0fe82c9f9e))
+- move docs to oclif.io ([43ebeba](https://github.com/oclif/oclif/commit/43ebebaec031697f7e1595e79771d15c76e11cd6))
+- move docs to oclif.io ([c067401](https://github.com/oclif/oclif/commit/c067401cce09b8f425826c05f11c4266f842bd40))
 
+## [1.4.10](https://github.com/oclif/oclif/compare/v1.4.9...v1.4.10) (2018-03-22)
 
+### Bug Fixes
 
-## [1.0.2](https://github.com/oclif/oclif/compare/v1.0.1...v1.0.2) (2018-02-13)
+- use npm for scripts if not yarn ([01370d2](https://github.com/oclif/oclif/commit/01370d252da66e25b80a2947ec38e4db21101a61))
 
+## [1.4.9](https://github.com/oclif/oclif/compare/v1.4.7...v1.4.9) (2018-03-22)
 
 ### Bug Fixes
 
-* updated tslint ([8b465d4](https://github.com/oclif/oclif/commit/8b465d48a86ec9277a41cee86fd846c428433925))
+- make yarn optional ([#76](https://github.com/oclif/oclif/issues/76)) ([7157660](https://github.com/oclif/oclif/commit/71576609c182f8fbffbffdf408671c5cb9c4a0b6))
+- only need 1 example ([5ef966f](https://github.com/oclif/oclif/commit/5ef966fc1f4165983c9ff6ca8250e7e5d61c79bf))
 
+## [1.4.7](https://github.com/oclif/oclif/compare/v1.4.6...v1.4.7) (2018-03-22)
 
+### Bug Fixes
 
-## [1.0.1](https://github.com/oclif/oclif/compare/v1.0.0...v1.0.1) (2018-02-13)
+- add path argument description ([c37e724](https://github.com/oclif/oclif/commit/c37e72480dcf740dc1ef1708ad09552672238208))
 
+## [1.4.6](https://github.com/oclif/oclif/compare/v1.4.5...v1.4.6) (2018-03-22)
 
 ### Bug Fixes
 
-* oclif rename ([d4c5efe](https://github.com/oclif/oclif/commit/d4c5efe21fdcaace6560ec3c6afb237c8b8d80e5))
+- build manifest ([241741a](https://github.com/oclif/oclif/commit/241741aedd890b37be615972da35f02596cde082))
 
+## [1.4.5](https://github.com/oclif/oclif/compare/v1.4.4...v1.4.5) (2018-03-22)
 
+### Bug Fixes
 
-# [1.0.0](https://github.com/oclif/oclif/compare/v0.33.23...v1.0.0) (2018-02-13)
+- set OCLIF_NEXT_VERSION ([032b231](https://github.com/oclif/oclif/commit/032b2319d756e0817f96c6311cbaa3a027f6b0e2))
 
+## [1.4.4](https://github.com/oclif/oclif/compare/v1.4.3...v1.4.4) (2018-03-22)
 
 ### Bug Fixes
 
-* fixed bin name ([5995e7f](https://github.com/oclif/oclif/commit/5995e7f182a7cfd7aac485ff0e6b92dc6613ed92))
-* rename to oclif ([cb1ab35](https://github.com/oclif/oclif/commit/cb1ab3507bc44d6039a4b9ce226a8ba7e5e4f247))
-* updated config ([40d2500](https://github.com/oclif/oclif/commit/40d2500c501fc45ed18a760cb8295e96cb34fde8))
+- set OCLIF_NEXT_VERSION ([4d774b1](https://github.com/oclif/oclif/commit/4d774b17451c873cb736c8d458b884a4d2916474))
 
+## [1.4.3](https://github.com/oclif/oclif/compare/v1.4.1...v1.4.3) (2018-03-22)
 
+### Bug Fixes
 
-## [0.33.23](https://github.com/oclif/oclif/compare/v0.33.22...v0.33.23) (2018-02-07)
+- updated dev-cli ([f9a733a](https://github.com/oclif/oclif/commit/f9a733a0c78d4f9e2a8a22d3fc7320cf2d978398))
+- updated dev-cli ([c9307e7](https://github.com/oclif/oclif/commit/c9307e7e986a44e5882d29bee5e0ffaca266834b))
 
+## [1.4.1](https://github.com/oclif/oclif/compare/v1.4.0...v1.4.1) (2018-03-21)
 
 ### Bug Fixes
 
-* better repo handling ([4b1add8](https://github.com/oclif/oclif/commit/4b1add8b8a3798b794d0b64c60b4d72ab0595ce4))
+- remove noUnusedLocals and noUnusedParameters as these are checked with tslint ([06e2c46](https://github.com/oclif/oclif/commit/06e2c4615151abf37b30d4ff20b1f9b2e476ace8))
 
+# [1.4.0](https://github.com/oclif/oclif/compare/v1.3.14...v1.4.0) (2018-03-21)
 
+### Features
 
-## [0.33.22](https://github.com/oclif/oclif/compare/v0.33.21...v0.33.22) (2018-02-07)
+- add tslint component option ([#63](https://github.com/oclif/oclif/issues/63)) ([e3a7943](https://github.com/oclif/oclif/commit/e3a7943855ffbe96de697541025a90cf59194076))
 
+## [1.3.14](https://github.com/oclif/oclif/compare/v1.3.13...v1.3.14) (2018-03-21)
 
 ### Bug Fixes
 
-* updated deps ([05d0bf0](https://github.com/oclif/oclif/commit/05d0bf0460b2225585d0f4dd14c1d4186b76f48a))
+- add -h and -v flags for single ([#62](https://github.com/oclif/oclif/issues/62)) ([009490b](https://github.com/oclif/oclif/commit/009490b5de98bb9e71874abee253eb1be85f38d1))
 
+## [1.3.13](https://github.com/oclif/oclif/compare/v1.3.12...v1.3.13) (2018-03-21)
 
+### Bug Fixes
 
-## [0.33.21](https://github.com/oclif/oclif/compare/v0.33.20...v0.33.21) (2018-02-07)
+- use version long flag for circle test ([#61](https://github.com/oclif/oclif/issues/61)) ([6497188](https://github.com/oclif/oclif/commit/64971883b1df554d06a13a8242694f34c517b1e6))
 
+## [1.3.12](https://github.com/oclif/oclif/compare/v1.3.11...v1.3.12) (2018-03-21)
 
 ### Bug Fixes
 
-* added docs ([b5d798e](https://github.com/oclif/oclif/commit/b5d798e1b405aeb6edaa166919fa3a19357f00a9))
+- readme template ([#60](https://github.com/oclif/oclif/issues/60)) ([d91482b](https://github.com/oclif/oclif/commit/d91482b5a701198d554bde2495be924ece3486cc))
 
+## [1.3.11](https://github.com/oclif/oclif/compare/v1.3.10...v1.3.11) (2018-03-20)
 
+### Bug Fixes
 
-## [0.33.20](https://github.com/oclif/oclif/compare/v0.33.19...v0.33.20) (2018-02-07)
+- bump dependencies ([edacb13](https://github.com/oclif/oclif/commit/edacb134324c59c5a778ff3fd870804800662eeb))
 
+## [1.3.10](https://github.com/oclif/oclif/compare/v1.3.9...v1.3.10) (2018-03-15)
 
 ### Bug Fixes
 
-* added clean step ([da22f7f](https://github.com/oclif/oclif/commit/da22f7faec395b0776d53ddf65941ed0c5829457))
+- return a promise from yeoman callback style so it actually awaits ([#43](https://github.com/oclif/oclif/issues/43)) ([c22f423](https://github.com/oclif/oclif/commit/c22f423a73ba134afb1087b125413de6fb5a223e))
 
+## [1.3.9](https://github.com/oclif/oclif/compare/v1.3.8...v1.3.9) (2018-03-08)
 
+### Bug Fixes
 
-## [0.33.19](https://github.com/oclif/oclif/compare/v0.33.18...v0.33.19) (2018-02-07)
+- add component descriptions and option to skip ([25cf71e](https://github.com/oclif/oclif/commit/25cf71ede5a8235a70a1c54eedd5c23a971df003))
 
+## [1.3.8](https://github.com/oclif/oclif/compare/v1.3.7...v1.3.8) (2018-02-28)
 
 ### Bug Fixes
 
-* add docs and readme to semantic-release ([75b4a74](https://github.com/oclif/oclif/commit/75b4a740540646d205bc1e4694210f8d3534b5f3))
-* bump dev-cli ([6d4764f](https://github.com/oclif/oclif/commit/6d4764f1a1f96dc3fbe842ed942dd9964e1e451a))
+- fixed ts-node compatibility ([a45f405](https://github.com/oclif/oclif/commit/a45f4058f9492d8c7cb7cf4a6906a709b34165e9))
 
+## [1.3.7](https://github.com/oclif/oclif/compare/v1.3.6...v1.3.7) (2018-02-17)
 
+### Bug Fixes
 
-## [0.33.18](https://github.com/oclif/oclif/compare/v0.33.17...v0.33.18) (2018-02-07)
+- updated help ([0d6ab82](https://github.com/oclif/oclif/commit/0d6ab82e4db4f99e28273af25425fc9f3919334d))
 
+## [1.3.6](https://github.com/oclif/oclif/compare/v1.3.5...v1.3.6) (2018-02-17)
 
 ### Bug Fixes
 
-* use git add when not using semantic release ([b66c1e9](https://github.com/oclif/oclif/commit/b66c1e9187e0b4fe6e137fbe52df87c73408ebcb))
+- show full path to file ([c9741f7](https://github.com/oclif/oclif/commit/c9741f7ac908f44d963dadda9c19aa1a50fd0ad6))
 
+## [1.3.5](https://github.com/oclif/oclif/compare/v1.3.4...v1.3.5) (2018-02-17)
 
+### Bug Fixes
 
-## [0.33.17](https://github.com/oclif/oclif/compare/v0.33.16...v0.33.17) (2018-02-07)
+- updated command ([3ffd29a](https://github.com/oclif/oclif/commit/3ffd29af6122becb6f9006df364c5092ef9fad08))
 
+## [1.3.4](https://github.com/oclif/oclif/compare/v1.3.3...v1.3.4) (2018-02-15)
 
 ### Bug Fixes
 
-* bump dev-cli ([39e5b5f](https://github.com/oclif/oclif/commit/39e5b5f234e033780a5942e355898a53c51a21f8))
+- updated dev-cli ([8359976](https://github.com/oclif/oclif/commit/8359976eda2665452ecb138291355444ab699809))
 
+## [1.3.3](https://github.com/oclif/oclif/compare/v1.3.2...v1.3.3) (2018-02-15)
 
+### Bug Fixes
 
-## [0.33.16](https://github.com/oclif/oclif/compare/v0.33.15...v0.33.16) (2018-02-07)
+- updated dev-cli ([1d890f6](https://github.com/oclif/oclif/commit/1d890f6ed224134ef7bf549d0a6ab34aaa49ae78))
 
+## [1.3.2](https://github.com/oclif/oclif/compare/v1.3.1...v1.3.2) (2018-02-15)
 
 ### Bug Fixes
 
-* updated config ([76c5225](https://github.com/oclif/oclif/commit/76c5225195f83f661decc00dba24f45ecf80638c))
+- add emojis to readme ([fb7765c](https://github.com/oclif/oclif/commit/fb7765cf6e6aee9be110eab94e596cdc85c323dc))
 
+## [1.3.1](https://github.com/oclif/oclif/compare/v1.3.0...v1.3.1) (2018-02-15)
 
+### Bug Fixes
 
-## [0.33.15](https://github.com/oclif/oclif/compare/v0.33.14...v0.33.15) (2018-02-07)
+- updated dev-cli ([dc18085](https://github.com/oclif/oclif/commit/dc18085b5c99a9df0d92f96c8df85aada98fb951))
+- use shield style for circle ([6bb89b6](https://github.com/oclif/oclif/commit/6bb89b6e1ce6f17c1a57c6671c1df4178b595da8))
+- use shield style for circle ([d0533a6](https://github.com/oclif/oclif/commit/d0533a66a4522d448676b134090ef09cecc2c45c))
 
+# [1.3.0](https://github.com/oclif/oclif/compare/v1.2.14...v1.3.0) (2018-02-15)
 
-### Bug Fixes
+### Features
 
-* updated dev-cli ([587e09a](https://github.com/oclif/oclif/commit/587e09a3c1956d4abd0f1c375cd95a8e7ce542b8))
+- add LICENSE if salesforce repo + mit ([17f4b2a](https://github.com/oclif/oclif/commit/17f4b2a47249c8568bf4e0e65961b01d5461cb8e))
+- add LICENSE if salesforce repo + mit ([94847e5](https://github.com/oclif/oclif/commit/94847e5ace0e9e0c6f8e86aa9ceb92c421952684))
 
+### Reverts
 
+- Revert "chore: add nyc" ([4150a7b](https://github.com/oclif/oclif/commit/4150a7bc05707a58942f51a8c94bf514ee5bbe6d))
 
-## [0.33.14](https://github.com/oclif/oclif/compare/v0.33.13...v0.33.14) (2018-02-07)
+## [1.2.14](https://github.com/oclif/oclif/compare/v1.2.12...v1.2.14) (2018-02-15)
+
+### Bug Fixes
+
+- fixed node version check ([c4de729](https://github.com/oclif/oclif/commit/c4de729b1570ef0f3e544693c94ca008ff4557f8))
+- updated dev-cli ([59e3e32](https://github.com/oclif/oclif/commit/59e3e32f39f251414f10224cfe49c5f2bee44090))
 
+## [1.2.12](https://github.com/oclif/oclif/compare/v1.2.11...v1.2.12) (2018-02-15)
 
 ### Bug Fixes
 
-* add manifest to gitignore ([692ca32](https://github.com/oclif/oclif/commit/692ca3219069c7a78a9d3c35731710d956647fec))
-* add READMEs ([f78cf18](https://github.com/oclif/oclif/commit/f78cf18904abbddb98172a79f231cf8368648da5))
-* bump cache ([9773ed7](https://github.com/oclif/oclif/commit/9773ed77910d557b0f37bac7650beeea8c3bf9a3))
+- fixed repo link ([dddd420](https://github.com/oclif/oclif/commit/dddd42000930bfb37a2d573042863cdbe96e1613))
 
+## [1.2.11](https://github.com/oclif/oclif/compare/v1.2.10...v1.2.11) (2018-02-15)
 
+### Bug Fixes
 
-## [0.33.13](https://github.com/oclif/oclif/compare/v0.33.12...v0.33.13) (2018-02-06)
+- readme improvements ([f1829b7](https://github.com/oclif/oclif/commit/f1829b73960bacd99efe1668a9e93bf23e578e62))
 
+## [1.2.10](https://github.com/oclif/oclif/compare/v1.2.9...v1.2.10) (2018-02-15)
 
 ### Bug Fixes
 
-* add config to deps ([354683d](https://github.com/oclif/oclif/commit/354683d115210be507f06bfa3e6ed19c04733700))
-* add errors to deps ([fd0e9ed](https://github.com/oclif/oclif/commit/fd0e9ed9dc1c2e96ef104d042fadffedc6743389))
+- updated dev-cli ([bbfac28](https://github.com/oclif/oclif/commit/bbfac28675d71d64cfd8ab037856b7963555830c))
 
+## [1.2.9](https://github.com/oclif/oclif/compare/v1.2.8...v1.2.9) (2018-02-15)
 
+### Bug Fixes
 
-## [0.33.12](https://github.com/oclif/oclif/compare/v0.33.11...v0.33.12) (2018-02-06)
+- improve docs ([cc5fd9b](https://github.com/oclif/oclif/commit/cc5fd9bebd22c10810622feefe21b7c8e3703225))
 
+## [1.2.8](https://github.com/oclif/oclif/compare/v1.2.7...v1.2.8) (2018-02-15)
 
 ### Bug Fixes
 
-* generator improvements ([50c303f](https://github.com/oclif/oclif/commit/50c303f3dd8f173c3f470cf26f964231f8d1f626))
+- use github for snyk ([842fa27](https://github.com/oclif/oclif/commit/842fa2723d9026a4d9dd6d52194a989c0b30ae7a))
 
+## [1.2.7](https://github.com/oclif/oclif/compare/v1.2.6...v1.2.7) (2018-02-15)
 
+### Bug Fixes
 
-## [0.33.11](https://github.com/oclif/oclif/compare/v0.33.10...v0.33.11) (2018-02-06)
+- doc improvements ([9ebd831](https://github.com/oclif/oclif/commit/9ebd831e24626f9a886614b413c75a8f4ad55c28))
+- updated dev-cli ([32ca869](https://github.com/oclif/oclif/commit/32ca869f48afcda131db592f9dc6a6a5cd30e193))
 
+## [1.2.6](https://github.com/oclif/oclif/compare/v1.2.5...v1.2.6) (2018-02-15)
 
 ### Bug Fixes
 
-* use @anycli/errors ([90afa69](https://github.com/oclif/oclif/commit/90afa69f0516a721736925c11997cb6b6cfb5051))
+- updated deps ([6bf6fcd](https://github.com/oclif/oclif/commit/6bf6fcd9ac7e7271c225fef36b3ab91baac14a82))
 
+## [1.2.5](https://github.com/oclif/oclif/compare/v1.2.4...v1.2.5) (2018-02-14)
 
+### Bug Fixes
 
-## [0.33.10](https://github.com/oclif/oclif/compare/v0.33.9...v0.33.10) (2018-02-06)
+- run version command ([7997c86](https://github.com/oclif/oclif/commit/7997c864efc2e04f62a95838f73e9967a8d8e0a5))
 
+## [1.2.4](https://github.com/oclif/oclif/compare/v1.2.3...v1.2.4) (2018-02-14)
 
 ### Bug Fixes
 
-* use @anycli/errors ([348d7e8](https://github.com/oclif/oclif/commit/348d7e8ac5b8cfc3c28d2d67df6e8b1312780fd5))
-* use @anycli/errors ([82530fd](https://github.com/oclif/oclif/commit/82530fd0c5115eed21064fb32447811a7134f1b1))
+- docs ([6f858e4](https://github.com/oclif/oclif/commit/6f858e466b938c9c09865e35c9cd579ba2a030cb))
 
+## [1.2.3](https://github.com/oclif/oclif/compare/v1.2.2...v1.2.3) (2018-02-14)
 
+### Bug Fixes
 
-## [0.33.9](https://github.com/oclif/oclif/compare/v0.33.8...v0.33.9) (2018-02-05)
+- add docs ([e6d3dab](https://github.com/oclif/oclif/commit/e6d3dab41a4abb18269ffe30fad2e43b42f3b18d))
+- add docs ([f314205](https://github.com/oclif/oclif/commit/f3142056c0c00ae1b38d21968edc17202b3bc582))
+- updated readme links ([1171d36](https://github.com/oclif/oclif/commit/1171d36e5984234c2e964857ebd4f168792726d5))
 
+## [1.2.2](https://github.com/oclif/oclif/compare/v1.2.1...v1.2.2) (2018-02-14)
 
 ### Bug Fixes
 
-* add catch handler ([b8848a4](https://github.com/oclif/oclif/commit/b8848a46e2df42be7883cc424cbfd340998c8e16))
+- doc improvements ([c2b8476](https://github.com/oclif/oclif/commit/c2b8476dd87eade0330fd87576705833462db597))
 
+## [1.2.1](https://github.com/oclif/oclif/compare/v1.2.0...v1.2.1) (2018-02-14)
 
+### Bug Fixes
 
-## [0.33.8](https://github.com/oclif/oclif/compare/v0.33.7...v0.33.8) (2018-02-05)
+- doc improvements ([740c0d7](https://github.com/oclif/oclif/commit/740c0d75f64ef09e9e88158bf42e31d3cea49c5d))
 
+# [1.2.0](https://github.com/oclif/oclif/compare/v1.1.2...v1.2.0) (2018-02-14)
 
 ### Bug Fixes
 
-* move help to devPlugins for pluginsg ([157f1d6](https://github.com/oclif/oclif/commit/157f1d6807d1771dd7de7f5e2107a01e0d5fb6c3))
+- set bin for plugins ([c8d0f11](https://github.com/oclif/oclif/commit/c8d0f11cb67b4abf4c1bb1744b58bb45317e538c))
+
+### Features
 
+- added readme toc ([2cdba83](https://github.com/oclif/oclif/commit/2cdba835bbee7039ccc7f2c225827878871caee1))
 
+## [1.1.2](https://github.com/oclif/oclif/compare/v1.1.1...v1.1.2) (2018-02-14)
 
-## [0.33.7](https://github.com/oclif/oclif/compare/v0.33.6...v0.33.7) (2018-02-05)
+### Bug Fixes
 
+- automatically replace readme on generation ([65b831c](https://github.com/oclif/oclif/commit/65b831cdf4e3c85748f7a2b71331d37961087be9))
+
+## [1.1.1](https://github.com/oclif/oclif/compare/v1.1.0...v1.1.1) (2018-02-14)
 
 ### Bug Fixes
 
-* globby not needed for single ([8d34141](https://github.com/oclif/oclif/commit/8d34141c7ca7b1263eb04528305c0941f3f787de))
+- fixed lint issue ([218101c](https://github.com/oclif/oclif/commit/218101cb0c3124a5676ea22b05cf4b4defeb0208))
+- move nps-utils to deps ([52c0012](https://github.com/oclif/oclif/commit/52c0012f302bbedb0b29de84914feec1e82c325a))
+- remove unused title ([234d83a](https://github.com/oclif/oclif/commit/234d83a2226179e7891011e2eb769c71881a46ad))
 
+# [1.1.0](https://github.com/oclif/oclif/compare/v1.0.6...v1.1.0) (2018-02-13)
 
+### Features
 
-## [0.33.6](https://github.com/oclif/oclif/compare/v0.33.5...v0.33.6) (2018-02-05)
+- add readme content ([12af0a7](https://github.com/oclif/oclif/commit/12af0a7fe82da6c5b7e38b3e9505e218e51f565d))
 
+## [1.0.6](https://github.com/oclif/oclif/compare/v1.0.5...v1.0.6) (2018-02-13)
 
 ### Bug Fixes
 
-* add globby ([bf2bfab](https://github.com/oclif/oclif/commit/bf2bfabfd95af2de5250acd4b2edfa9c559d7a5b))
-* updates from config/command ([b2d0733](https://github.com/oclif/oclif/commit/b2d0733239389ba120a5d88b149dfdb68afe9fb8))
+- make linter happy ([c344697](https://github.com/oclif/oclif/commit/c3446976042b13715d7e3c4c2b07804f6fea81c1))
+- updated deps ([2b8fa8a](https://github.com/oclif/oclif/commit/2b8fa8a19b7ab3f94a0b6164ea3e3ff5bfd3b10b))
 
+## [1.0.5](https://github.com/oclif/oclif/compare/v1.0.4...v1.0.5) (2018-02-13)
 
+### Bug Fixes
 
-## [0.33.5](https://github.com/oclif/oclif/compare/v0.33.4...v0.33.5) (2018-02-05)
+- use v1 of nyc-config ([17f19f2](https://github.com/oclif/oclif/commit/17f19f2e9b37dfd62f51f15cbdf542158ace16d8))
 
+## [1.0.4](https://github.com/oclif/oclif/compare/v1.0.2...v1.0.4) (2018-02-13)
 
 ### Bug Fixes
 
-* use stylist tslint formatter ([9542a1f](https://github.com/oclif/oclif/commit/9542a1f6be95f8ea2abbe6d520cc21498c2372ee))
+- improve message ([7e918c9](https://github.com/oclif/oclif/commit/7e918c9d6a503d0ff1a8a262a545d0a2f3588478))
+- use v1 of nyc-config ([5c832ff](https://github.com/oclif/oclif/commit/5c832ff35260be26461fc15bd40a8b0fe82c9f9e))
 
+## [1.0.2](https://github.com/oclif/oclif/compare/v1.0.1...v1.0.2) (2018-02-13)
 
+### Bug Fixes
 
-## [0.33.4](https://github.com/oclif/oclif/compare/v0.33.3...v0.33.4) (2018-02-04)
+- updated tslint ([8b465d4](https://github.com/oclif/oclif/commit/8b465d48a86ec9277a41cee86fd846c428433925))
 
+## [1.0.1](https://github.com/oclif/oclif/compare/v1.0.0...v1.0.1) (2018-02-13)
 
 ### Bug Fixes
 
-* no longer need engine ([bd41ae3](https://github.com/oclif/oclif/commit/bd41ae3b8f1f22a6c8e69a681472a8556a612e0a))
+- oclif rename ([d4c5efe](https://github.com/oclif/oclif/commit/d4c5efe21fdcaace6560ec3c6afb237c8b8d80e5))
 
+# [1.0.0](https://github.com/oclif/oclif/compare/v0.33.23...v1.0.0) (2018-02-13)
 
+### Bug Fixes
 
-## [0.33.3](https://github.com/oclif/oclif/compare/v0.33.2...v0.33.3) (2018-02-03)
+- fixed bin name ([5995e7f](https://github.com/oclif/oclif/commit/5995e7f182a7cfd7aac485ff0e6b92dc6613ed92))
+- rename to oclif ([cb1ab35](https://github.com/oclif/oclif/commit/cb1ab3507bc44d6039a4b9ce226a8ba7e5e4f247))
+- updated config ([40d2500](https://github.com/oclif/oclif/commit/40d2500c501fc45ed18a760cb8295e96cb34fde8))
 
+## [0.33.23](https://github.com/oclif/oclif/compare/v0.33.22...v0.33.23) (2018-02-07)
 
 ### Bug Fixes
 
-* use simpler command/config setup ([b5b7377](https://github.com/oclif/oclif/commit/b5b737797a9b7fbe9e1b762818e10e4f3b1e5380))
+- better repo handling ([4b1add8](https://github.com/oclif/oclif/commit/4b1add8b8a3798b794d0b64c60b4d72ab0595ce4))
 
+## [0.33.22](https://github.com/oclif/oclif/compare/v0.33.21...v0.33.22) (2018-02-07)
 
+### Bug Fixes
 
-## [0.33.2](https://github.com/oclif/oclif/compare/v0.33.1...v0.33.2) (2018-02-02)
+- updated deps ([05d0bf0](https://github.com/oclif/oclif/commit/05d0bf0460b2225585d0f4dd14c1d4186b76f48a))
 
+## [0.33.21](https://github.com/oclif/oclif/compare/v0.33.20...v0.33.21) (2018-02-07)
 
 ### Bug Fixes
 
-* disable yarn check for now ([5637b46](https://github.com/oclif/oclif/commit/5637b46450e185e9591be63475d2ca7fb819a3af))
-* use -o for manifest building ([2171042](https://github.com/oclif/oclif/commit/2171042b96df00d147827d4d3506697073007862))
+- added docs ([b5d798e](https://github.com/oclif/oclif/commit/b5d798e1b405aeb6edaa166919fa3a19357f00a9))
 
+## [0.33.20](https://github.com/oclif/oclif/compare/v0.33.19...v0.33.20) (2018-02-07)
 
+### Bug Fixes
 
-## [0.33.1](https://github.com/oclif/oclif/compare/v0.33.0...v0.33.1) (2018-02-02)
+- added clean step ([da22f7f](https://github.com/oclif/oclif/commit/da22f7faec395b0776d53ddf65941ed0c5829457))
 
+## [0.33.19](https://github.com/oclif/oclif/compare/v0.33.18...v0.33.19) (2018-02-07)
 
 ### Bug Fixes
 
-* fixed manifest location ([14802aa](https://github.com/oclif/oclif/commit/14802aa23e3b81793163c602caff56cd277a3db0))
-* fixed manifest location ([36f79a8](https://github.com/oclif/oclif/commit/36f79a8404c8175d8de6450275f97147c2b272f9))
+- add docs and readme to semantic-release ([75b4a74](https://github.com/oclif/oclif/commit/75b4a740540646d205bc1e4694210f8d3534b5f3))
+- bump dev-cli ([6d4764f](https://github.com/oclif/oclif/commit/6d4764f1a1f96dc3fbe842ed942dd9964e1e451a))
 
+## [0.33.18](https://github.com/oclif/oclif/compare/v0.33.17...v0.33.18) (2018-02-07)
 
+### Bug Fixes
 
-# [0.33.0](https://github.com/oclif/oclif/compare/v0.32.16...v0.33.0) (2018-02-02)
+- use git add when not using semantic release ([b66c1e9](https://github.com/oclif/oclif/commit/b66c1e9187e0b4fe6e137fbe52df87c73408ebcb))
 
+## [0.33.17](https://github.com/oclif/oclif/compare/v0.33.16...v0.33.17) (2018-02-07)
 
-### Features
+### Bug Fixes
 
-* add manifest to package ([2fc517c](https://github.com/oclif/oclif/commit/2fc517cccdb4117269247694f9add20f088173c2))
+- bump dev-cli ([39e5b5f](https://github.com/oclif/oclif/commit/39e5b5f234e033780a5942e355898a53c51a21f8))
 
+## [0.33.16](https://github.com/oclif/oclif/compare/v0.33.15...v0.33.16) (2018-02-07)
 
+### Bug Fixes
 
-## [0.32.16](https://github.com/oclif/oclif/compare/v0.32.15...v0.32.16) (2018-02-02)
+- updated config ([76c5225](https://github.com/oclif/oclif/commit/76c5225195f83f661decc00dba24f45ecf80638c))
 
+## [0.33.15](https://github.com/oclif/oclif/compare/v0.33.14...v0.33.15) (2018-02-07)
 
 ### Bug Fixes
 
-* use yarn, not yarn install ([ff61a7f](https://github.com/oclif/oclif/commit/ff61a7fdc6a8d248e256f5396c74e94d4a6b81f9))
+- updated dev-cli ([587e09a](https://github.com/oclif/oclif/commit/587e09a3c1956d4abd0f1c375cd95a8e7ce542b8))
 
+## [0.33.14](https://github.com/oclif/oclif/compare/v0.33.13...v0.33.14) (2018-02-07)
 
+### Bug Fixes
 
-## [0.32.15](https://github.com/oclif/oclif/compare/v0.32.14...v0.32.15) (2018-02-02)
+- add manifest to gitignore ([692ca32](https://github.com/oclif/oclif/commit/692ca3219069c7a78a9d3c35731710d956647fec))
+- add READMEs ([f78cf18](https://github.com/oclif/oclif/commit/f78cf18904abbddb98172a79f231cf8368648da5))
+- bump cache ([9773ed7](https://github.com/oclif/oclif/commit/9773ed77910d557b0f37bac7650beeea8c3bf9a3))
 
+## [0.33.13](https://github.com/oclif/oclif/compare/v0.33.12...v0.33.13) (2018-02-06)
 
 ### Bug Fixes
 
-* fixed indentation ([0ee469a](https://github.com/oclif/oclif/commit/0ee469a0127736db65fc23c90332ab81043f8dea))
-* use strings instead of variable ([8e8b9a7](https://github.com/oclif/oclif/commit/8e8b9a79f0f93bf3a7e6104f6a619b4d24bb4d52))
+- add config to deps ([354683d](https://github.com/oclif/oclif/commit/354683d115210be507f06bfa3e6ed19c04733700))
+- add errors to deps ([fd0e9ed](https://github.com/oclif/oclif/commit/fd0e9ed9dc1c2e96ef104d042fadffedc6743389))
 
+## [0.33.12](https://github.com/oclif/oclif/compare/v0.33.11...v0.33.12) (2018-02-06)
 
+### Bug Fixes
 
-## [0.32.14](https://github.com/oclif/oclif/compare/v0.32.13...v0.32.14) (2018-02-02)
+- generator improvements ([50c303f](https://github.com/oclif/oclif/commit/50c303f3dd8f173c3f470cf26f964231f8d1f626))
 
+## [0.33.11](https://github.com/oclif/oclif/compare/v0.33.10...v0.33.11) (2018-02-06)
 
 ### Bug Fixes
 
-* add bin scripts to files ([a95f10c](https://github.com/oclif/oclif/commit/a95f10cf176d975537cb1696c8ab8ddcd4b2efd3))
-* added bin script to pjson ([190cb30](https://github.com/oclif/oclif/commit/190cb30a86e8674bc09ba9fcd675d67bb5083c2d))
+- use @anycli/errors ([90afa69](https://github.com/oclif/oclif/commit/90afa69f0516a721736925c11997cb6b6cfb5051))
 
+## [0.33.10](https://github.com/oclif/oclif/compare/v0.33.9...v0.33.10) (2018-02-06)
 
+### Bug Fixes
 
-## [0.32.13](https://github.com/oclif/oclif/compare/v0.32.12...v0.32.13) (2018-02-02)
+- use @anycli/errors ([348d7e8](https://github.com/oclif/oclif/commit/348d7e8ac5b8cfc3c28d2d67df6e8b1312780fd5))
+- use @anycli/errors ([82530fd](https://github.com/oclif/oclif/commit/82530fd0c5115eed21064fb32447811a7134f1b1))
 
+## [0.33.9](https://github.com/oclif/oclif/compare/v0.33.8...v0.33.9) (2018-02-05)
 
 ### Bug Fixes
 
-* improve experience when overwiting existing base ([f79dfef](https://github.com/oclif/oclif/commit/f79dfef683853e6c6122010866a3c206d2d6b134))
-* updated deps ([f2d3b5d](https://github.com/oclif/oclif/commit/f2d3b5d77719508cd3247e294efeeaee9def7fb6))
-* use new plugins ([7c58310](https://github.com/oclif/oclif/commit/7c58310d686f0ed7fcf2917efcf53b0e457faa5c))
+- add catch handler ([b8848a4](https://github.com/oclif/oclif/commit/b8848a46e2df42be7883cc424cbfd340998c8e16))
 
+## [0.33.8](https://github.com/oclif/oclif/compare/v0.33.7...v0.33.8) (2018-02-05)
 
+### Bug Fixes
 
-## [0.32.12](https://github.com/oclif/oclif/compare/v0.32.11...v0.32.12) (2018-02-02)
+- move help to devPlugins for pluginsg ([157f1d6](https://github.com/oclif/oclif/commit/157f1d6807d1771dd7de7f5e2107a01e0d5fb6c3))
 
+## [0.33.7](https://github.com/oclif/oclif/compare/v0.33.6...v0.33.7) (2018-02-05)
 
 ### Bug Fixes
 
-* do not install dev deps on release ([8ba2b5f](https://github.com/oclif/oclif/commit/8ba2b5f0b87683fb1d06a2a521afb69913a80129))
+- globby not needed for single ([8d34141](https://github.com/oclif/oclif/commit/8d34141c7ca7b1263eb04528305c0941f3f787de))
 
+## [0.33.6](https://github.com/oclif/oclif/compare/v0.33.5...v0.33.6) (2018-02-05)
 
+### Bug Fixes
 
-## [0.32.11](https://github.com/oclif/oclif/compare/v0.32.10...v0.32.11) (2018-02-02)
+- add globby ([bf2bfab](https://github.com/oclif/oclif/commit/bf2bfabfd95af2de5250acd4b2edfa9c559d7a5b))
+- updates from config/command ([b2d0733](https://github.com/oclif/oclif/commit/b2d0733239389ba120a5d88b149dfdb68afe9fb8))
 
+## [0.33.5](https://github.com/oclif/oclif/compare/v0.33.4...v0.33.5) (2018-02-05)
 
 ### Bug Fixes
 
-* consolidate circle jobs ([d72884d](https://github.com/oclif/oclif/commit/d72884dfe10aa6780e8875eed99c7a8920b14817))
-* consolidate circle jobs ([9f3c2f2](https://github.com/oclif/oclif/commit/9f3c2f2fec229ddb570f0c14c46d839713c7a38b))
+- use stylist tslint formatter ([9542a1f](https://github.com/oclif/oclif/commit/9542a1f6be95f8ea2abbe6d520cc21498c2372ee))
 
+## [0.33.4](https://github.com/oclif/oclif/compare/v0.33.3...v0.33.4) (2018-02-04)
 
+### Bug Fixes
 
-## [0.32.10](https://github.com/oclif/oclif/compare/v0.32.9...v0.32.10) (2018-02-02)
+- no longer need engine ([bd41ae3](https://github.com/oclif/oclif/commit/bd41ae3b8f1f22a6c8e69a681472a8556a612e0a))
 
+## [0.33.3](https://github.com/oclif/oclif/compare/v0.33.2...v0.33.3) (2018-02-03)
 
 ### Bug Fixes
 
-* use name in concurrently ([1384b55](https://github.com/oclif/oclif/commit/1384b55ba5218bded587c7bcb7ceeff41da69f1e))
+- use simpler command/config setup ([b5b7377](https://github.com/oclif/oclif/commit/b5b737797a9b7fbe9e1b762818e10e4f3b1e5380))
 
+## [0.33.2](https://github.com/oclif/oclif/compare/v0.33.1...v0.33.2) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.9](https://github.com/oclif/oclif/compare/v0.32.8...v0.32.9) (2018-02-02)
+- disable yarn check for now ([5637b46](https://github.com/oclif/oclif/commit/5637b46450e185e9591be63475d2ca7fb819a3af))
+- use -o for manifest building ([2171042](https://github.com/oclif/oclif/commit/2171042b96df00d147827d4d3506697073007862))
 
+## [0.33.1](https://github.com/oclif/oclif/compare/v0.33.0...v0.33.1) (2018-02-02)
 
 ### Bug Fixes
 
-* fixed yarn mutex ([43335e9](https://github.com/oclif/oclif/commit/43335e983141cb2c2379579d6b7f673a94d6cdf5))
+- fixed manifest location ([14802aa](https://github.com/oclif/oclif/commit/14802aa23e3b81793163c602caff56cd277a3db0))
+- fixed manifest location ([36f79a8](https://github.com/oclif/oclif/commit/36f79a8404c8175d8de6450275f97147c2b272f9))
 
+# [0.33.0](https://github.com/oclif/oclif/compare/v0.32.16...v0.33.0) (2018-02-02)
 
+### Features
 
-## [0.32.8](https://github.com/oclif/oclif/compare/v0.32.7...v0.32.8) (2018-02-02)
+- add manifest to package ([2fc517c](https://github.com/oclif/oclif/commit/2fc517cccdb4117269247694f9add20f088173c2))
 
+## [0.32.16](https://github.com/oclif/oclif/compare/v0.32.15...v0.32.16) (2018-02-02)
 
 ### Bug Fixes
 
-* add another retry ([6dfe207](https://github.com/oclif/oclif/commit/6dfe2079f518d99e68d91a584254e76d8232dd46))
-* add another workflow for caching ([5fe5d11](https://github.com/oclif/oclif/commit/5fe5d110fc7732b6521a1acf311b0ae84d0240a4))
-* cache after release ([a7e0d14](https://github.com/oclif/oclif/commit/a7e0d141cf5a65a9faf202998a5c53c32fcb695c))
+- use yarn, not yarn install ([ff61a7f](https://github.com/oclif/oclif/commit/ff61a7fdc6a8d248e256f5396c74e94d4a6b81f9))
 
+## [0.32.15](https://github.com/oclif/oclif/compare/v0.32.14...v0.32.15) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.7](https://github.com/oclif/oclif/compare/v0.32.6...v0.32.7) (2018-02-02)
+- fixed indentation ([0ee469a](https://github.com/oclif/oclif/commit/0ee469a0127736db65fc23c90332ab81043f8dea))
+- use strings instead of variable ([8e8b9a7](https://github.com/oclif/oclif/commit/8e8b9a79f0f93bf3a7e6104f6a619b4d24bb4d52))
 
+## [0.32.14](https://github.com/oclif/oclif/compare/v0.32.13...v0.32.14) (2018-02-02)
 
 ### Bug Fixes
 
-* add mutex so tests can run in parallel ([b03b605](https://github.com/oclif/oclif/commit/b03b60552d5d9a46e982a6f657fb033c1008af72))
-* attach workspace when releasing ([daa43ea](https://github.com/oclif/oclif/commit/daa43ead11cd86d0d73cc8b999bc4658864c01c0))
+- add bin scripts to files ([a95f10c](https://github.com/oclif/oclif/commit/a95f10cf176d975537cb1696c8ab8ddcd4b2efd3))
+- added bin script to pjson ([190cb30](https://github.com/oclif/oclif/commit/190cb30a86e8674bc09ba9fcd675d67bb5083c2d))
 
+## [0.32.13](https://github.com/oclif/oclif/compare/v0.32.12...v0.32.13) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.6](https://github.com/oclif/oclif/compare/v0.32.5...v0.32.6) (2018-02-02)
+- improve experience when overwiting existing base ([f79dfef](https://github.com/oclif/oclif/commit/f79dfef683853e6c6122010866a3c206d2d6b134))
+- updated deps ([f2d3b5d](https://github.com/oclif/oclif/commit/f2d3b5d77719508cd3247e294efeeaee9def7fb6))
+- use new plugins ([7c58310](https://github.com/oclif/oclif/commit/7c58310d686f0ed7fcf2917efcf53b0e457faa5c))
 
+## [0.32.12](https://github.com/oclif/oclif/compare/v0.32.11...v0.32.12) (2018-02-02)
 
 ### Bug Fixes
 
-* circle cache improvements ([7e9c3d0](https://github.com/oclif/oclif/commit/7e9c3d0e045b49ab2957c9888d60b1c421243abc))
-* fixed plugin circle config ([85b5640](https://github.com/oclif/oclif/commit/85b56406a591cde36f9586fbac671850d7b80848))
+- do not install dev deps on release ([8ba2b5f](https://github.com/oclif/oclif/commit/8ba2b5f0b87683fb1d06a2a521afb69913a80129))
 
+## [0.32.11](https://github.com/oclif/oclif/compare/v0.32.10...v0.32.11) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.5](https://github.com/oclif/oclif/compare/v0.32.4...v0.32.5) (2018-02-02)
+- consolidate circle jobs ([d72884d](https://github.com/oclif/oclif/commit/d72884dfe10aa6780e8875eed99c7a8920b14817))
+- consolidate circle jobs ([9f3c2f2](https://github.com/oclif/oclif/commit/9f3c2f2fec229ddb570f0c14c46d839713c7a38b))
 
+## [0.32.10](https://github.com/oclif/oclif/compare/v0.32.9...v0.32.10) (2018-02-02)
 
 ### Bug Fixes
 
-* fixed global add ([6e5fb0e](https://github.com/oclif/oclif/commit/6e5fb0e3c9793e1daeb1f6fa8d80204970f1e611))
-* move setup_git into greenkeeper ([b6c87d9](https://github.com/oclif/oclif/commit/b6c87d9ff8ad5321ed77ad8e1a8d67eeaf1bb41f))
+- use name in concurrently ([1384b55](https://github.com/oclif/oclif/commit/1384b55ba5218bded587c7bcb7ceeff41da69f1e))
 
+## [0.32.9](https://github.com/oclif/oclif/compare/v0.32.8...v0.32.9) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.4](https://github.com/oclif/oclif/compare/v0.32.3...v0.32.4) (2018-02-02)
+- fixed yarn mutex ([43335e9](https://github.com/oclif/oclif/commit/43335e983141cb2c2379579d6b7f673a94d6cdf5))
 
+## [0.32.8](https://github.com/oclif/oclif/compare/v0.32.7...v0.32.8) (2018-02-02)
 
 ### Bug Fixes
 
-* fixed restore cache step ([20de5dc](https://github.com/oclif/oclif/commit/20de5dcd2abf943b2d5004d1027c09208b910c3d))
+- add another retry ([6dfe207](https://github.com/oclif/oclif/commit/6dfe2079f518d99e68d91a584254e76d8232dd46))
+- add another workflow for caching ([5fe5d11](https://github.com/oclif/oclif/commit/5fe5d110fc7732b6521a1acf311b0ae84d0240a4))
+- cache after release ([a7e0d14](https://github.com/oclif/oclif/commit/a7e0d141cf5a65a9faf202998a5c53c32fcb695c))
 
+## [0.32.7](https://github.com/oclif/oclif/compare/v0.32.6...v0.32.7) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.3](https://github.com/oclif/oclif/compare/v0.32.1...v0.32.3) (2018-02-02)
+- add mutex so tests can run in parallel ([b03b605](https://github.com/oclif/oclif/commit/b03b60552d5d9a46e982a6f657fb033c1008af72))
+- attach workspace when releasing ([daa43ea](https://github.com/oclif/oclif/commit/daa43ead11cd86d0d73cc8b999bc4658864c01c0))
 
+## [0.32.6](https://github.com/oclif/oclif/compare/v0.32.5...v0.32.6) (2018-02-02)
 
 ### Bug Fixes
 
-* add yarn circle step ([52610cd](https://github.com/oclif/oclif/commit/52610cd57c55b0aa3511d04bbed07da31289b8b7))
-* fixed greenkeeper script ([b8be73b](https://github.com/oclif/oclif/commit/b8be73b1a7d4d5781f81719a5f265587899685ce))
-* fixed greenkeeper script ([d904f25](https://github.com/oclif/oclif/commit/d904f25e231177c153ddbb2de24d5fed4c69ba62))
-* fixed yarn step in circle config ([8bdadc3](https://github.com/oclif/oclif/commit/8bdadc3033a7726af4b2a3c739d0aa5418b729c3))
-* fixed yarn step in circle config ([e6e19c4](https://github.com/oclif/oclif/commit/e6e19c4e0c08310b613b0b3ebe30b0d45e694464))
-* restore cache if exact match ([0f27493](https://github.com/oclif/oclif/commit/0f27493ec8eadc56a1049160317ebf17e492f113))
-* use new circle config ([2c9d9c7](https://github.com/oclif/oclif/commit/2c9d9c735600db9082e5000a32dc2508e8e1c564))
+- circle cache improvements ([7e9c3d0](https://github.com/oclif/oclif/commit/7e9c3d0e045b49ab2957c9888d60b1c421243abc))
+- fixed plugin circle config ([85b5640](https://github.com/oclif/oclif/commit/85b56406a591cde36f9586fbac671850d7b80848))
 
+## [0.32.5](https://github.com/oclif/oclif/compare/v0.32.4...v0.32.5) (2018-02-02)
 
+### Bug Fixes
 
-## [0.32.1](https://github.com/oclif/oclif/compare/v0.32.0...v0.32.1) (2018-02-01)
+- fixed global add ([6e5fb0e](https://github.com/oclif/oclif/commit/6e5fb0e3c9793e1daeb1f6fa8d80204970f1e611))
+- move setup_git into greenkeeper ([b6c87d9](https://github.com/oclif/oclif/commit/b6c87d9ff8ad5321ed77ad8e1a8d67eeaf1bb41f))
 
+## [0.32.4](https://github.com/oclif/oclif/compare/v0.32.3...v0.32.4) (2018-02-02)
 
 ### Bug Fixes
 
-* fixed circle config ([9a8166e](https://github.com/oclif/oclif/commit/9a8166e9aa82614c80e238a64b89c3396de42d12))
+- fixed restore cache step ([20de5dc](https://github.com/oclif/oclif/commit/20de5dcd2abf943b2d5004d1027c09208b910c3d))
 
+## [0.32.3](https://github.com/oclif/oclif/compare/v0.32.1...v0.32.3) (2018-02-02)
 
+### Bug Fixes
 
-# [0.32.0](https://github.com/oclif/oclif/compare/v0.31.1...v0.32.0) (2018-02-01)
+- add yarn circle step ([52610cd](https://github.com/oclif/oclif/commit/52610cd57c55b0aa3511d04bbed07da31289b8b7))
+- fixed greenkeeper script ([b8be73b](https://github.com/oclif/oclif/commit/b8be73b1a7d4d5781f81719a5f265587899685ce))
+- fixed greenkeeper script ([d904f25](https://github.com/oclif/oclif/commit/d904f25e231177c153ddbb2de24d5fed4c69ba62))
+- fixed yarn step in circle config ([8bdadc3](https://github.com/oclif/oclif/commit/8bdadc3033a7726af4b2a3c739d0aa5418b729c3))
+- fixed yarn step in circle config ([e6e19c4](https://github.com/oclif/oclif/commit/e6e19c4e0c08310b613b0b3ebe30b0d45e694464))
+- restore cache if exact match ([0f27493](https://github.com/oclif/oclif/commit/0f27493ec8eadc56a1049160317ebf17e492f113))
+- use new circle config ([2c9d9c7](https://github.com/oclif/oclif/commit/2c9d9c735600db9082e5000a32dc2508e8e1c564))
 
+## [0.32.1](https://github.com/oclif/oclif/compare/v0.32.0...v0.32.1) (2018-02-01)
 
 ### Bug Fixes
 
-* do not set anycli if empty ([3c7bab9](https://github.com/oclif/oclif/commit/3c7bab978384c20e4697dc64aecc3f0f80e1c836))
+- fixed circle config ([9a8166e](https://github.com/oclif/oclif/commit/9a8166e9aa82614c80e238a64b89c3396de42d12))
 
+# [0.32.0](https://github.com/oclif/oclif/compare/v0.31.1...v0.32.0) (2018-02-01)
 
-### Features
+### Bug Fixes
 
-* add cache step to circleci ([3efa4c5](https://github.com/oclif/oclif/commit/3efa4c533d1fc76ec4f737132eb60ea7322fe9d3))
-* add cache step to circleci ([fcef9fa](https://github.com/oclif/oclif/commit/fcef9fa75ea9a74ad33096cea55d1025a9f23577))
+- do not set anycli if empty ([3c7bab9](https://github.com/oclif/oclif/commit/3c7bab978384c20e4697dc64aecc3f0f80e1c836))
 
+### Features
 
+- add cache step to circleci ([3efa4c5](https://github.com/oclif/oclif/commit/3efa4c533d1fc76ec4f737132eb60ea7322fe9d3))
+- add cache step to circleci ([fcef9fa](https://github.com/oclif/oclif/commit/fcef9fa75ea9a74ad33096cea55d1025a9f23577))
 
 ## [0.31.1](https://github.com/oclif/oclif/compare/v0.31.0...v0.31.1) (2018-02-01)
 
-
 ### Bug Fixes
 
-* rename repo ([37ca4cc](https://github.com/oclif/oclif/commit/37ca4cc50179eab01fcba69e6c8bcbf5e5424b70))
-* use new linter rules ([2fbd4f9](https://github.com/oclif/oclif/commit/2fbd4f9f2e3c06f8a8092b2cd3e759759784d4a1))
-
-
+- rename repo ([37ca4cc](https://github.com/oclif/oclif/commit/37ca4cc50179eab01fcba69e6c8bcbf5e5424b70))
+- use new linter rules ([2fbd4f9](https://github.com/oclif/oclif/commit/2fbd4f9f2e3c06f8a8092b2cd3e759759784d4a1))
 
 # [0.31.0](https://github.com/oclif/oclif/compare/v0.30.7...v0.31.0) (2018-02-01)
 
-
 ### Features
 
-* rename package to @anycli/cli ([ec28865](https://github.com/oclif/oclif/commit/ec2886542814433b5fa2942efbd0b98a8ea48ace))
-
-
+- rename package to @anycli/cli ([ec28865](https://github.com/oclif/oclif/commit/ec2886542814433b5fa2942efbd0b98a8ea48ace))
 
 ## [0.30.7](https://github.com/oclif/oclif/compare/v0.30.6...v0.30.7) (2018-02-01)
 
-
 ### Bug Fixes
 
-* smoke tests first ([e324c14](https://github.com/oclif/oclif/commit/e324c141548c6c025271fa0a4da721de670a60a7))
-
-
+- smoke tests first ([e324c14](https://github.com/oclif/oclif/commit/e324c141548c6c025271fa0a4da721de670a60a7))
 
 ## [0.30.6](https://github.com/oclif/oclif/compare/v0.30.4...v0.30.6) (2018-02-01)
 
-
 ### Bug Fixes
 
-* add smoke tests to appveyor ([f33a88d](https://github.com/oclif/oclif/commit/f33a88d2cccda944ce585236a55e1be9f68bbdfe))
-* dont try to get version of plugin ([ad3544b](https://github.com/oclif/oclif/commit/ad3544b65ff6246708646393eaf7ce036b737898))
-* fix nyc on circle ([8257b7a](https://github.com/oclif/oclif/commit/8257b7a1b19e0a6c907b962ed11e4df735856062))
-
-
+- add smoke tests to appveyor ([f33a88d](https://github.com/oclif/oclif/commit/f33a88d2cccda944ce585236a55e1be9f68bbdfe))
+- dont try to get version of plugin ([ad3544b](https://github.com/oclif/oclif/commit/ad3544b65ff6246708646393eaf7ce036b737898))
+- fix nyc on circle ([8257b7a](https://github.com/oclif/oclif/commit/8257b7a1b19e0a6c907b962ed11e4df735856062))
 
 ## [0.30.4](https://github.com/oclif/oclif/compare/v0.30.3...v0.30.4) (2018-02-01)
 
-
 ### Bug Fixes
 
-* added some smoke tests ([24664f1](https://github.com/oclif/oclif/commit/24664f10e2e7bc0597fa71aa17ff459769167315))
-
-
+- added some smoke tests ([24664f1](https://github.com/oclif/oclif/commit/24664f10e2e7bc0597fa71aa17ff459769167315))
 
 ## [0.30.3](https://github.com/oclif/oclif/compare/v0.30.2...v0.30.3) (2018-02-01)
 
-
 ### Bug Fixes
 
-* remove fromScratch ([65d35c5](https://github.com/oclif/oclif/commit/65d35c53097297d46163b4976a1f18cf53bfed38))
-
-
+- remove fromScratch ([65d35c5](https://github.com/oclif/oclif/commit/65d35c53097297d46163b4976a1f18cf53bfed38))
 
 ## [0.30.2](https://github.com/oclif/oclif/compare/v0.30.1...v0.30.2) (2018-02-01)
 
-
 ### Bug Fixes
 
-* fix commitlint ([9aa2212](https://github.com/oclif/oclif/commit/9aa22129f25dd7525f3e7b01edf01ee52ec6543c))
-* fix yarn execs ([93b3f16](https://github.com/oclif/oclif/commit/93b3f16c2ecd2f512f78c00f010fbc178bebcf6c))
-
-
+- fix commitlint ([9aa2212](https://github.com/oclif/oclif/commit/9aa22129f25dd7525f3e7b01edf01ee52ec6543c))
+- fix yarn execs ([93b3f16](https://github.com/oclif/oclif/commit/93b3f16c2ecd2f512f78c00f010fbc178bebcf6c))
 
 ## [0.30.1](https://github.com/oclif/oclif/compare/v0.30.0...v0.30.1) (2018-02-01)
 
-
 ### Bug Fixes
 
-* fixed linters ([5ac2d4c](https://github.com/oclif/oclif/commit/5ac2d4cc56ddbd3aa407155e02b0348cb3f20087))
-* fixed mocha in js ([dbc44bf](https://github.com/oclif/oclif/commit/dbc44bfe0eb6d16951823d0a51bfb56f698fb8b3))
-* fixed single bin script ([a8a4b33](https://github.com/oclif/oclif/commit/a8a4b33c6759ff7228857ea7133e25c292715bad))
-* fixing single ([354f46b](https://github.com/oclif/oclif/commit/354f46b0486648b434bb66d72e7387325f3f9ff0))
-* only use concurrently when needed ([bd567e1](https://github.com/oclif/oclif/commit/bd567e18d6ddf3caae744ade41c0c0f73602b660))
-
-
+- fixed linters ([5ac2d4c](https://github.com/oclif/oclif/commit/5ac2d4cc56ddbd3aa407155e02b0348cb3f20087))
+- fixed mocha in js ([dbc44bf](https://github.com/oclif/oclif/commit/dbc44bfe0eb6d16951823d0a51bfb56f698fb8b3))
+- fixed single bin script ([a8a4b33](https://github.com/oclif/oclif/commit/a8a4b33c6759ff7228857ea7133e25c292715bad))
+- fixing single ([354f46b](https://github.com/oclif/oclif/commit/354f46b0486648b434bb66d72e7387325f3f9ff0))
+- only use concurrently when needed ([bd567e1](https://github.com/oclif/oclif/commit/bd567e18d6ddf3caae744ade41c0c0f73602b660))
 
 # [0.30.0](https://github.com/oclif/oclif/compare/v0.29.0...v0.30.0) (2018-02-01)
 
-
 ### Features
 
-* added --help and --version ([07e5a96](https://github.com/oclif/oclif/commit/07e5a961dfc75dd750ec2453c2bce10bdb8ea91e))
-
-
+- added --help and --version ([07e5a96](https://github.com/oclif/oclif/commit/07e5a961dfc75dd750ec2453c2bce10bdb8ea91e))
 
 # [0.29.0](https://github.com/oclif/oclif/compare/v0.28.16...v0.29.0) (2018-02-01)
 
-
 ### Bug Fixes
 
-* anycli rename ([50823f4](https://github.com/oclif/oclif/commit/50823f45e92d10a9970961719721b864de67830a))
-* consolidate commands and tests ([b90320a](https://github.com/oclif/oclif/commit/b90320a5dd3ef9e5808995c38d7d16d86b32ea03))
-* fixed command generator ([8c5c179](https://github.com/oclif/oclif/commit/8c5c179d2f1bb39b03565855670c5d6800d395ce))
-* rename package for now ([8e2f0c8](https://github.com/oclif/oclif/commit/8e2f0c818b364d3a01314bfc777d28a45e3e6575))
-
+- anycli rename ([50823f4](https://github.com/oclif/oclif/commit/50823f45e92d10a9970961719721b864de67830a))
+- consolidate commands and tests ([b90320a](https://github.com/oclif/oclif/commit/b90320a5dd3ef9e5808995c38d7d16d86b32ea03))
+- fixed command generator ([8c5c179](https://github.com/oclif/oclif/commit/8c5c179d2f1bb39b03565855670c5d6800d395ce))
+- rename package for now ([8e2f0c8](https://github.com/oclif/oclif/commit/8e2f0c818b364d3a01314bfc777d28a45e3e6575))
 
 ### Features
 
-* added help and not-found plugins to multi ([844ab18](https://github.com/oclif/oclif/commit/844ab18e55794c4b6ac36168e0648b1e8222044f))
-* use new parser model ([7e7f7d3](https://github.com/oclif/oclif/commit/7e7f7d310b212c3105135d962ab232605a6122bc))
-
-
+- added help and not-found plugins to multi ([844ab18](https://github.com/oclif/oclif/commit/844ab18e55794c4b6ac36168e0648b1e8222044f))
+- use new parser model ([7e7f7d3](https://github.com/oclif/oclif/commit/7e7f7d310b212c3105135d962ab232605a6122bc))
 
 ## [0.28.16](https://github.com/oclif/oclif/compare/v0.28.15...v0.28.16) (2018-01-30)
 
-
 ### Bug Fixes
 
-* only sort if array ([6557c82](https://github.com/oclif/oclif/commit/6557c82ee08b6ded4b7332a6dc6696f0c306792a))
-
-
+- only sort if array ([6557c82](https://github.com/oclif/oclif/commit/6557c82ee08b6ded4b7332a6dc6696f0c306792a))
 
 ## [0.28.15](https://github.com/oclif/oclif/compare/v0.28.12...v0.28.15) (2018-01-30)
 
-
 ### Bug Fixes
 
-* remove release task from nps ([38e15dd](https://github.com/oclif/oclif/commit/38e15dd09586c4f228cec3b8ceb4723371f4e816))
-* slight performance boost in appveyor ([314398b](https://github.com/oclif/oclif/commit/314398bb37631a1eefafb9a60ffbbac5d0594db0))
-* sort plugins if exists ([b729296](https://github.com/oclif/oclif/commit/b7292967965fc9c1b8135930d6edb421bf4b4d1f))
-* sort plugins if exists ([8d8fe71](https://github.com/oclif/oclif/commit/8d8fe719629c933da8eb52c670d3ad810075bdaa))
-
-
+- remove release task from nps ([38e15dd](https://github.com/oclif/oclif/commit/38e15dd09586c4f228cec3b8ceb4723371f4e816))
+- slight performance boost in appveyor ([314398b](https://github.com/oclif/oclif/commit/314398bb37631a1eefafb9a60ffbbac5d0594db0))
+- sort plugins if exists ([b729296](https://github.com/oclif/oclif/commit/b7292967965fc9c1b8135930d6edb421bf4b4d1f))
+- sort plugins if exists ([8d8fe71](https://github.com/oclif/oclif/commit/8d8fe719629c933da8eb52c670d3ad810075bdaa))
 
 ## [0.28.12](https://github.com/oclif/oclif/compare/v0.28.10...v0.28.12) (2018-01-30)
 
-
 ### Bug Fixes
 
-* add nyc to appveyor ([b0216f1](https://github.com/oclif/oclif/commit/b0216f1b244f70a4bdbde1ce1fca6ada36edef9f))
-* use new test format ([67fe975](https://github.com/oclif/oclif/commit/67fe975beaf5f96ccb66b5b8eb1a6ed505cc27fa))
-
-
+- add nyc to appveyor ([b0216f1](https://github.com/oclif/oclif/commit/b0216f1b244f70a4bdbde1ce1fca6ada36edef9f))
+- use new test format ([67fe975](https://github.com/oclif/oclif/commit/67fe975beaf5f96ccb66b5b8eb1a6ed505cc27fa))
 
 ## [0.28.10](https://github.com/oclif/oclif/compare/v0.28.9...v0.28.10) (2018-01-30)
 
-
 ### Bug Fixes
 
-* only push eslint if it is not empty ([ef9a649](https://github.com/oclif/oclif/commit/ef9a649c070fe8271addfb41bd0ba5a774a8745b))
-
-
+- only push eslint if it is not empty ([ef9a649](https://github.com/oclif/oclif/commit/ef9a649c070fe8271addfb41bd0ba5a774a8745b))
 
 ## [0.28.9](https://github.com/oclif/oclif/compare/v0.28.8...v0.28.9) (2018-01-30)
 
-
 ### Bug Fixes
 
-* fixed typescript output ([b3bde94](https://github.com/oclif/oclif/commit/b3bde9437d06c69b4bd2a9ef7206444020c80aea))
-
-
+- fixed typescript output ([b3bde94](https://github.com/oclif/oclif/commit/b3bde9437d06c69b4bd2a9ef7206444020c80aea))
 
 ## [0.28.8](https://github.com/oclif/oclif/compare/v0.28.7...v0.28.8) (2018-01-30)
 
-
 ### Bug Fixes
 
-* add nyc config ([73b448b](https://github.com/oclif/oclif/commit/73b448b21887b61367c36fa0e11be2f81fb713d2))
-
-
+- add nyc config ([73b448b](https://github.com/oclif/oclif/commit/73b448b21887b61367c36fa0e11be2f81fb713d2))
 
 ## [0.28.7](https://github.com/oclif/oclif/compare/v0.28.6...v0.28.7) (2018-01-30)
 
-
 ### Bug Fixes
 
-* add nyc config ([21f25d0](https://github.com/oclif/oclif/commit/21f25d0e1f56b6572cc2851f75cb295564979377))
-* semantic-release bin ([813d91b](https://github.com/oclif/oclif/commit/813d91b455247c581c6ee3e8d53018bcd6152db6))
-
-
+- add nyc config ([21f25d0](https://github.com/oclif/oclif/commit/21f25d0e1f56b6572cc2851f75cb295564979377))
+- semantic-release bin ([813d91b](https://github.com/oclif/oclif/commit/813d91b455247c581c6ee3e8d53018bcd6152db6))
 
 ## [0.28.6](https://github.com/oclif/oclif/compare/v0.28.5...v0.28.6) (2018-01-30)
 
-
 ### Bug Fixes
 
-* reduce dependencies needed in dev ([2a0bbad](https://github.com/oclif/oclif/commit/2a0bbad60b773bd0cef93c596428e0d3403e9c5c))
-* semantic-release bin ([2fcef58](https://github.com/oclif/oclif/commit/2fcef58bfab09e2901374ed2c5bcd76f3c06f92e))
-* semantic-release bin ([ba77257](https://github.com/oclif/oclif/commit/ba77257bf55971d6b645e08c0fbe557d3b18ec66))
-* semantic-release bin ([6addee5](https://github.com/oclif/oclif/commit/6addee5447d750ace0e83bc9225c46b9416f956b))
-
-
+- reduce dependencies needed in dev ([2a0bbad](https://github.com/oclif/oclif/commit/2a0bbad60b773bd0cef93c596428e0d3403e9c5c))
+- semantic-release bin ([2fcef58](https://github.com/oclif/oclif/commit/2fcef58bfab09e2901374ed2c5bcd76f3c06f92e))
+- semantic-release bin ([ba77257](https://github.com/oclif/oclif/commit/ba77257bf55971d6b645e08c0fbe557d3b18ec66))
+- semantic-release bin ([6addee5](https://github.com/oclif/oclif/commit/6addee5447d750ace0e83bc9225c46b9416f956b))
 
 ## [0.28.5](https://github.com/oclif/oclif/compare/v0.28.4...v0.28.5) (2018-01-29)
 
-
 ### Bug Fixes
 
-* add semantic-release locally instead ([c8bc421](https://github.com/oclif/oclif/commit/c8bc4211b69286ec638f6fd53d2f97671069f1b7))
-* dev dep ([46dd0a3](https://github.com/oclif/oclif/commit/46dd0a312345b951713ebb5ef14c538dd4aaa3e8))
-
-
+- add semantic-release locally instead ([c8bc421](https://github.com/oclif/oclif/commit/c8bc4211b69286ec638f6fd53d2f97671069f1b7))
+- dev dep ([46dd0a3](https://github.com/oclif/oclif/commit/46dd0a312345b951713ebb5ef14c538dd4aaa3e8))
 
 ## [0.28.4](https://github.com/oclif/oclif/compare/v0.28.2...v0.28.4) (2018-01-29)
 
-
 ### Bug Fixes
 
-* add commitlint ([f60d9f2](https://github.com/oclif/oclif/commit/f60d9f2cb363ca0788b036b47a01cec67cb9aa4d))
-* semantic-release bin ([8183ae5](https://github.com/oclif/oclif/commit/8183ae5f69e6614981fcd3760b6993bccc8de40a))
-
-
+- add commitlint ([f60d9f2](https://github.com/oclif/oclif/commit/f60d9f2cb363ca0788b036b47a01cec67cb9aa4d))
+- semantic-release bin ([8183ae5](https://github.com/oclif/oclif/commit/8183ae5f69e6614981fcd3760b6993bccc8de40a))
 
 ## [0.28.2](https://github.com/oclif/oclif/compare/v0.28.1...v0.28.2) (2018-01-29)
 
-
 ### Bug Fixes
 
-* fetch semantic release when needed ([db289ca](https://github.com/oclif/oclif/commit/db289cad501e0701d61fff5a3460b328dc04a9c1))
-* fetch semantic release when needed ([7340723](https://github.com/oclif/oclif/commit/734072349121156886f021d5982a4c6e1c19b49c))
-
-
+- fetch semantic release when needed ([db289ca](https://github.com/oclif/oclif/commit/db289cad501e0701d61fff5a3460b328dc04a9c1))
+- fetch semantic release when needed ([7340723](https://github.com/oclif/oclif/commit/734072349121156886f021d5982a4c6e1c19b49c))
 
 ## [0.28.1](https://github.com/oclif/oclif/compare/v0.28.0...v0.28.1) (2018-01-29)
 
-
 ### Bug Fixes
 
-* explicitly add @dxcli/nyc-config ([9944ead](https://github.com/oclif/oclif/commit/9944eaddcd40b9a8fc523306736b67b2e038909c))
-
-
+- explicitly add @dxcli/nyc-config ([9944ead](https://github.com/oclif/oclif/commit/9944eaddcd40b9a8fc523306736b67b2e038909c))
 
 # [0.28.0](https://github.com/oclif/oclif/compare/v0.27.1...v0.28.0) (2018-01-28)
 
-
 ### Bug Fixes
 
-* add TS parsing for commands ([68c2023](https://github.com/oclif/oclif/commit/68c2023b5475bf1fa1fb99738b4c8a391f37f953))
-* bump cli-ux ([adf7aad](https://github.com/oclif/oclif/commit/adf7aad16e7a6185c89b2c81185401e45a7351e0))
-* bump cli-ux ([f4f0f3f](https://github.com/oclif/oclif/commit/f4f0f3ff96f497b0d906c537de50126cce99a145))
-* fixing single and adding windows cmd scripts ([3659d86](https://github.com/oclif/oclif/commit/3659d8652208e48b4bd5cf3bb9a67ee8f2c5aca6))
-* improve TS loading ([8d42d1e](https://github.com/oclif/oclif/commit/8d42d1e6917d71b9c53359df6fb050c3d9103b21))
-* simplified bin scripts ([8b36b61](https://github.com/oclif/oclif/commit/8b36b615cd0c96adc92e8f6dc4765f5dac5c2778))
-* updated deps ([c6e576a](https://github.com/oclif/oclif/commit/c6e576ab96798c1763787faf87819cb1961f9108))
-
+- add TS parsing for commands ([68c2023](https://github.com/oclif/oclif/commit/68c2023b5475bf1fa1fb99738b4c8a391f37f953))
+- bump cli-ux ([adf7aad](https://github.com/oclif/oclif/commit/adf7aad16e7a6185c89b2c81185401e45a7351e0))
+- bump cli-ux ([f4f0f3f](https://github.com/oclif/oclif/commit/f4f0f3ff96f497b0d906c537de50126cce99a145))
+- fixing single and adding windows cmd scripts ([3659d86](https://github.com/oclif/oclif/commit/3659d8652208e48b4bd5cf3bb9a67ee8f2c5aca6))
+- improve TS loading ([8d42d1e](https://github.com/oclif/oclif/commit/8d42d1e6917d71b9c53359df6fb050c3d9103b21))
+- simplified bin scripts ([8b36b61](https://github.com/oclif/oclif/commit/8b36b615cd0c96adc92e8f6dc4765f5dac5c2778))
+- updated deps ([c6e576a](https://github.com/oclif/oclif/commit/c6e576ab96798c1763787faf87819cb1961f9108))
 
 ### Features
 
-* add mocha script ([4efb9ab](https://github.com/oclif/oclif/commit/4efb9abafb1204fcadd14cbb0415a3151254914f))
-* added command generator ([f6fef1f](https://github.com/oclif/oclif/commit/f6fef1f4151078b4e5af985c70bc5c5d11ccf79c))
-
-
+- add mocha script ([4efb9ab](https://github.com/oclif/oclif/commit/4efb9abafb1204fcadd14cbb0415a3151254914f))
+- added command generator ([f6fef1f](https://github.com/oclif/oclif/commit/f6fef1f4151078b4e5af985c70bc5c5d11ccf79c))
 
 ## [0.27.1](https://github.com/oclif/oclif/compare/v0.27.0...v0.27.1) (2018-01-28)
 
-
 ### Bug Fixes
 
-* unescape commit message ([86c4556](https://github.com/oclif/oclif/commit/86c4556489bd3677f7f49a78ab85e692c8d0bc73))
-
-
+- unescape commit message ([86c4556](https://github.com/oclif/oclif/commit/86c4556489bd3677f7f49a78ab85e692c8d0bc73))
 
 # [0.27.0](https://github.com/oclif/oclif/compare/v0.26.11...v0.27.0) (2018-01-28)
 
-
 ### Bug Fixes
 
-* delete all files from existing example ([0081edd](https://github.com/oclif/oclif/commit/0081eddf15239402eb72b11892ff266c793e82c5))
-* fixed directory in release script ([a4550b7](https://github.com/oclif/oclif/commit/a4550b73c93219c13222118e7c31a8d69851b9cb))
-* fixing example publishing ([a333610](https://github.com/oclif/oclif/commit/a333610c4fb7045aff03726df52b42670099eba9))
-* ignore kebab case on package-scripts ([e3ca364](https://github.com/oclif/oclif/commit/e3ca364468ce04755abca6dfa160557ae6af8c0e))
-
+- delete all files from existing example ([0081edd](https://github.com/oclif/oclif/commit/0081eddf15239402eb72b11892ff266c793e82c5))
+- fixed directory in release script ([a4550b7](https://github.com/oclif/oclif/commit/a4550b73c93219c13222118e7c31a8d69851b9cb))
+- fixing example publishing ([a333610](https://github.com/oclif/oclif/commit/a333610c4fb7045aff03726df52b42670099eba9))
+- ignore kebab case on package-scripts ([e3ca364](https://github.com/oclif/oclif/commit/e3ca364468ce04755abca6dfa160557ae6af8c0e))
 
 ### Features
 
-* make examples follow version of create-dxcli ([de2b9fc](https://github.com/oclif/oclif/commit/de2b9fc10ba143e1e5de4e3f90b99f5d36259ce6))
-
-
+- make examples follow version of create-dxcli ([de2b9fc](https://github.com/oclif/oclif/commit/de2b9fc10ba143e1e5de4e3f90b99f5d36259ce6))
 
 ## [0.26.11](https://github.com/oclif/oclif/compare/v0.26.10...v0.26.11) (2018-01-28)
 
-
 ### Bug Fixes
 
-* parser is now exported from command ([6f192b1](https://github.com/oclif/oclif/commit/6f192b1cf7b373e1008bf9512cc0860ed1c8d953))
-
-
+- parser is now exported from command ([6f192b1](https://github.com/oclif/oclif/commit/6f192b1cf7b373e1008bf9512cc0860ed1c8d953))
 
 ## [0.26.10](https://github.com/oclif/oclif/compare/v0.26.9...v0.26.10) (2018-01-28)
 
-
 ### Bug Fixes
 
-* rename dev-test to test ([2a2bf9b](https://github.com/oclif/oclif/commit/2a2bf9b8919fb04da5ee172b9cb78d186c03837e))
-* run build before tests ([05765fa](https://github.com/oclif/oclif/commit/05765fa798b08a08963f3db5a35beeddd1ffb1cd))
-* run nps build before release ([0a289a1](https://github.com/oclif/oclif/commit/0a289a10ba1d162b296678aba732140938038534))
-
-
+- rename dev-test to test ([2a2bf9b](https://github.com/oclif/oclif/commit/2a2bf9b8919fb04da5ee172b9cb78d186c03837e))
+- run build before tests ([05765fa](https://github.com/oclif/oclif/commit/05765fa798b08a08963f3db5a35beeddd1ffb1cd))
+- run nps build before release ([0a289a1](https://github.com/oclif/oclif/commit/0a289a10ba1d162b296678aba732140938038534))
 
 ## [0.26.9](https://github.com/oclif/oclif/compare/v0.26.8...v0.26.9) (2018-01-28)
 
-
 ### Bug Fixes
 
-* overwrite scripts ([fc9bba9](https://github.com/oclif/oclif/commit/fc9bba9e38d40f726eb0b52af2635e6f91cc0412))
-
+- overwrite scripts ([fc9bba9](https://github.com/oclif/oclif/commit/fc9bba9e38d40f726eb0b52af2635e6f91cc0412))
 
 ### Reverts
 
-* Revert "fix: lower loglevel" ([8f6c71f](https://github.com/oclif/oclif/commit/8f6c71f4bfacf790d30f6bf60878daa416ad6c56))
-
-
+- Revert "fix: lower loglevel" ([8f6c71f](https://github.com/oclif/oclif/commit/8f6c71f4bfacf790d30f6bf60878daa416ad6c56))
 
 ## [0.26.8](https://github.com/oclif/oclif/compare/v0.26.7...v0.26.8) (2018-01-28)
 
-
 ### Bug Fixes
 
-* lower loglevel ([5286151](https://github.com/oclif/oclif/commit/528615137fba7d8637271a044617d55005aae769))
-
-
+- lower loglevel ([5286151](https://github.com/oclif/oclif/commit/528615137fba7d8637271a044617d55005aae769))
 
 ## [0.26.7](https://github.com/oclif/oclif/compare/v0.26.6...v0.26.7) (2018-01-28)
 
-
 ### Bug Fixes
 
-* send args to yarn ([3d851ba](https://github.com/oclif/oclif/commit/3d851bad9ce5223acd0f8cf38b8ac60d290e565d))
-
-
+- send args to yarn ([3d851ba](https://github.com/oclif/oclif/commit/3d851bad9ce5223acd0f8cf38b8ac60d290e565d))
 
 ## [0.26.6](https://github.com/oclif/oclif/compare/v0.26.5...v0.26.6) (2018-01-28)
 
-
 ### Bug Fixes
 
-* ensure /lib is always gitignored for ts ([07c7e38](https://github.com/oclif/oclif/commit/07c7e38f5bc38e72c78975a441ec9ea51608b4ed))
-
-
+- ensure /lib is always gitignored for ts ([07c7e38](https://github.com/oclif/oclif/commit/07c7e38f5bc38e72c78975a441ec9ea51608b4ed))
 
 ## [0.26.5](https://github.com/oclif/oclif/compare/v0.26.3...v0.26.5) (2018-01-28)
 
-
 ### Bug Fixes
 
-* add dev deps for single ([efc07dc](https://github.com/oclif/oclif/commit/efc07dca3aaae0d28ba4d6b501f882db2950e2bb))
-* add mocha-junit-reporter ([a1a4a08](https://github.com/oclif/oclif/commit/a1a4a082b225ad1b94b3705bcd84f71ef692368d))
-* add peerDependencies ([7be5fd1](https://github.com/oclif/oclif/commit/7be5fd16050c9bce4755ac7adf23a2e4269f7f5b))
-* fixed references to deps ([353cac2](https://github.com/oclif/oclif/commit/353cac2ad9c306885e31c3b90948f798ebea2bea))
-* only build on release ([dba0a63](https://github.com/oclif/oclif/commit/dba0a631286fb9abb3f3b6f86c92f85c9ce65d1d))
-* only build on release ([0f5e7db](https://github.com/oclif/oclif/commit/0f5e7dbc9c7c40638d41a9c1e0ffbb7971bf1f4a))
-* only build on release ([fecec26](https://github.com/oclif/oclif/commit/fecec26d2fd2150c853297469b8446bc141f0760))
-* release example plugins ([4500eed](https://github.com/oclif/oclif/commit/4500eed85daaa3f52971c3161a748e913567b00e))
-* rename dev packages ([e85a5cf](https://github.com/oclif/oclif/commit/e85a5cfc68fde3a16e10a1cd7d2ab0a920a121d6))
-* tests should use chai ([16fdb7b](https://github.com/oclif/oclif/commit/16fdb7b444c0e84d4f108db0e7117af14984b493))
-* use tmp dir on CI ([c98a8e4](https://github.com/oclif/oclif/commit/c98a8e40789bc9c853d5c067925058cf15d33cf0))
-
+- add dev deps for single ([efc07dc](https://github.com/oclif/oclif/commit/efc07dca3aaae0d28ba4d6b501f882db2950e2bb))
+- add mocha-junit-reporter ([a1a4a08](https://github.com/oclif/oclif/commit/a1a4a082b225ad1b94b3705bcd84f71ef692368d))
+- add peerDependencies ([7be5fd1](https://github.com/oclif/oclif/commit/7be5fd16050c9bce4755ac7adf23a2e4269f7f5b))
+- fixed references to deps ([353cac2](https://github.com/oclif/oclif/commit/353cac2ad9c306885e31c3b90948f798ebea2bea))
+- only build on release ([dba0a63](https://github.com/oclif/oclif/commit/dba0a631286fb9abb3f3b6f86c92f85c9ce65d1d))
+- only build on release ([0f5e7db](https://github.com/oclif/oclif/commit/0f5e7dbc9c7c40638d41a9c1e0ffbb7971bf1f4a))
+- only build on release ([fecec26](https://github.com/oclif/oclif/commit/fecec26d2fd2150c853297469b8446bc141f0760))
+- release example plugins ([4500eed](https://github.com/oclif/oclif/commit/4500eed85daaa3f52971c3161a748e913567b00e))
+- rename dev packages ([e85a5cf](https://github.com/oclif/oclif/commit/e85a5cfc68fde3a16e10a1cd7d2ab0a920a121d6))
+- tests should use chai ([16fdb7b](https://github.com/oclif/oclif/commit/16fdb7b444c0e84d4f108db0e7117af14984b493))
+- use tmp dir on CI ([c98a8e4](https://github.com/oclif/oclif/commit/c98a8e40789bc9c853d5c067925058cf15d33cf0))
 
 ### Reverts
 
-* Revert "test: run in series" ([8fc077d](https://github.com/oclif/oclif/commit/8fc077dea7c0dd18b4e22b050a2b5708637bdd1a))
-
-
+- Revert "test: run in series" ([8fc077d](https://github.com/oclif/oclif/commit/8fc077dea7c0dd18b4e22b050a2b5708637bdd1a))
 
 ## [0.26.3](https://github.com/oclif/oclif/compare/v0.26.2...v0.26.3) (2018-01-28)
 
-
 ### Bug Fixes
 
-* add semantic-release step if not mocha ([143532c](https://github.com/oclif/oclif/commit/143532cbea80d4f7fc697f9178773f17073643a2))
-
-
+- add semantic-release step if not mocha ([143532c](https://github.com/oclif/oclif/commit/143532cbea80d4f7fc697f9178773f17073643a2))
 
 ## [0.26.2](https://github.com/oclif/oclif/compare/v0.26.1...v0.26.2) (2018-01-28)
 
-
 ### Bug Fixes
 
-* add @dxcli/dev-semantic-release ([ff9c542](https://github.com/oclif/oclif/commit/ff9c542edabdddafc3d011841b26d949f0dd3275))
-
-
+- add @dxcli/dev-semantic-release ([ff9c542](https://github.com/oclif/oclif/commit/ff9c542edabdddafc3d011841b26d949f0dd3275))
 
 ## [0.26.1](https://github.com/oclif/oclif/compare/v0.26.0...v0.26.1) (2018-01-28)
 
-
 ### Bug Fixes
 
-* add dev deps ([98ea830](https://github.com/oclif/oclif/commit/98ea830cd9edbfabac3453ce41fb2ba2bd145de7))
-
-
+- add dev deps ([98ea830](https://github.com/oclif/oclif/commit/98ea830cd9edbfabac3453ce41fb2ba2bd145de7))
 
 # [0.26.0](https://github.com/oclif/oclif/compare/v0.25.2...v0.26.0) (2018-01-27)
 
-
 ### Bug Fixes
 
-* mkdir ([09d86ae](https://github.com/oclif/oclif/commit/09d86ae8807399db4ccb1680fc61533ca0ba6ef3))
-* mkdir ([dc8a2d1](https://github.com/oclif/oclif/commit/dc8a2d132d32f9b4a6617227de45eb82dd0694af))
-* updated deps ([9c5e204](https://github.com/oclif/oclif/commit/9c5e20478e77703ac148281ca7ea6cd5f12fd94e))
-
+- mkdir ([09d86ae](https://github.com/oclif/oclif/commit/09d86ae8807399db4ccb1680fc61533ca0ba6ef3))
+- mkdir ([dc8a2d1](https://github.com/oclif/oclif/commit/dc8a2d132d32f9b4a6617227de45eb82dd0694af))
+- updated deps ([9c5e204](https://github.com/oclif/oclif/commit/9c5e20478e77703ac148281ca7ea6cd5f12fd94e))
 
 ### Features
 
-* add bin script for local plugin dev ([552df43](https://github.com/oclif/oclif/commit/552df43e55f658392e6dddd2bac5b8e0df4a9799))
-
-
+- add bin script for local plugin dev ([552df43](https://github.com/oclif/oclif/commit/552df43e55f658392e6dddd2bac5b8e0df4a9799))
 
 ## [0.25.2](https://github.com/oclif/oclif/compare/v0.25.1...v0.25.2) (2018-01-27)
 
-
 ### Bug Fixes
 
-* updated deps ([7d6f276](https://github.com/oclif/oclif/commit/7d6f27655c4fd780b53a50598ae2d0450360368f))
-
-
+- updated deps ([7d6f276](https://github.com/oclif/oclif/commit/7d6f27655c4fd780b53a50598ae2d0450360368f))
 
 ## [0.25.1](https://github.com/oclif/oclif/compare/v0.24.3...v0.25.1) (2018-01-27)
 
-
 ### Bug Fixes
 
-* fixed issues with package-scripts ([571facb](https://github.com/oclif/oclif/commit/571facb3faac5dcac4d2d972c4799020c38ef764))
-* mkdirp reports ([ab4b02f](https://github.com/oclif/oclif/commit/ab4b02f03b67cd987b66a201c72019d2abd98b3b))
-
+- fixed issues with package-scripts ([571facb](https://github.com/oclif/oclif/commit/571facb3faac5dcac4d2d972c4799020c38ef764))
+- mkdirp reports ([ab4b02f](https://github.com/oclif/oclif/commit/ab4b02f03b67cd987b66a201c72019d2abd98b3b))
 
 ### Features
 
-* simplified package-scripts ([f31fae9](https://github.com/oclif/oclif/commit/f31fae9ff6e85dddf8036d53c41bdffcfa6ae350))
-
-
+- simplified package-scripts ([f31fae9](https://github.com/oclif/oclif/commit/f31fae9ff6e85dddf8036d53c41bdffcfa6ae350))
 
 ## [0.24.3](https://github.com/oclif/oclif/compare/v0.24.2...v0.24.3) (2018-01-27)
 
-
 ### Bug Fixes
 
-* scope templates ([2f03b43](https://github.com/oclif/oclif/commit/2f03b43221b11bb8add131a9e65c8533379cceac))
-* trap git push errors ([af327b3](https://github.com/oclif/oclif/commit/af327b3e8f2f01afd38692f3ae175348024daa11))
-
-
+- scope templates ([2f03b43](https://github.com/oclif/oclif/commit/2f03b43221b11bb8add131a9e65c8533379cceac))
+- trap git push errors ([af327b3](https://github.com/oclif/oclif/commit/af327b3e8f2f01afd38692f3ae175348024daa11))
 
 ## [0.24.2](https://github.com/oclif/oclif/compare/v0.24.1...v0.24.2) (2018-01-27)
 
-
 ### Bug Fixes
 
-* releases ([fbdc9c2](https://github.com/oclif/oclif/commit/fbdc9c253f8710ee3c8ab032d3c9c91113ab4823))
-* releases ([ba33440](https://github.com/oclif/oclif/commit/ba3344048c2cb510f9d81d1fbd9b5a69571dfe43))
-
-
+- releases ([fbdc9c2](https://github.com/oclif/oclif/commit/fbdc9c253f8710ee3c8ab032d3c9c91113ab4823))
+- releases ([ba33440](https://github.com/oclif/oclif/commit/ba3344048c2cb510f9d81d1fbd9b5a69571dfe43))
 
 ## [0.24.1](https://github.com/oclif/oclif/compare/v0.24.0...v0.24.1) (2018-01-27)
 
-
 ### Bug Fixes
 
-* fix releases ([435a96d](https://github.com/oclif/oclif/commit/435a96d0d6f426601d022c99e01d1ed1b50e8a39))
-* fixing example publishing ([6087f9c](https://github.com/oclif/oclif/commit/6087f9cebde26ea68420c3c362c385e78e2ad706))
-* fixing example publishing ([d03efe7](https://github.com/oclif/oclif/commit/d03efe752cd1b789bf9974a592b13bab16c6a600))
-* git username ([11b4b58](https://github.com/oclif/oclif/commit/11b4b5868f1f5063d62fd5a8db9b434f8857e4c5))
-* release examples ([6a1c3df](https://github.com/oclif/oclif/commit/6a1c3df746a3afd3778ea8f2a4f190fd5e4df8e4))
-* rename greenkeeper -> yarn ([78afe96](https://github.com/oclif/oclif/commit/78afe967268a10015a7a450c4b4ed0001cb1f9f8))
-* share cache in tests ([1a33371](https://github.com/oclif/oclif/commit/1a33371233b95c087e80cc8db249b48edbc61663))
-
-
+- fix releases ([435a96d](https://github.com/oclif/oclif/commit/435a96d0d6f426601d022c99e01d1ed1b50e8a39))
+- fixing example publishing ([6087f9c](https://github.com/oclif/oclif/commit/6087f9cebde26ea68420c3c362c385e78e2ad706))
+- fixing example publishing ([d03efe7](https://github.com/oclif/oclif/commit/d03efe752cd1b789bf9974a592b13bab16c6a600))
+- git username ([11b4b58](https://github.com/oclif/oclif/commit/11b4b5868f1f5063d62fd5a8db9b434f8857e4c5))
+- release examples ([6a1c3df](https://github.com/oclif/oclif/commit/6a1c3df746a3afd3778ea8f2a4f190fd5e4df8e4))
+- rename greenkeeper -> yarn ([78afe96](https://github.com/oclif/oclif/commit/78afe967268a10015a7a450c4b4ed0001cb1f9f8))
+- share cache in tests ([1a33371](https://github.com/oclif/oclif/commit/1a33371233b95c087e80cc8db249b48edbc61663))
 
 # [0.24.0](https://github.com/oclif/oclif/compare/v0.23.3...v0.24.0) (2018-01-27)
 
-
 ### Features
 
-* release examples ([2f901ca](https://github.com/oclif/oclif/commit/2f901ca9651edc92a3586bf3a7a86ddf21749a6f))
-* release examples automatically ([6c95bd9](https://github.com/oclif/oclif/commit/6c95bd9fb838b78762e8b8fc0d88d82dc84388bd))
-
-
+- release examples ([2f901ca](https://github.com/oclif/oclif/commit/2f901ca9651edc92a3586bf3a7a86ddf21749a6f))
+- release examples automatically ([6c95bd9](https://github.com/oclif/oclif/commit/6c95bd9fb838b78762e8b8fc0d88d82dc84388bd))
 
 ## [0.23.3](https://github.com/oclif/oclif/compare/v0.23.2...v0.23.3) (2018-01-27)
 
-
 ### Bug Fixes
 
-* add templates to pack ([ea06630](https://github.com/oclif/oclif/commit/ea066302ac109a86d4186460803eb152a87edb56))
-* default to not having options ([72dd9d9](https://github.com/oclif/oclif/commit/72dd9d90826b213faa6efbc8e5ba003630b69097))
-
-
+- add templates to pack ([ea06630](https://github.com/oclif/oclif/commit/ea066302ac109a86d4186460803eb152a87edb56))
+- default to not having options ([72dd9d9](https://github.com/oclif/oclif/commit/72dd9d90826b213faa6efbc8e5ba003630b69097))
 
 ## [0.23.2](https://github.com/oclif/oclif/compare/v0.23.1...v0.23.2) (2018-01-27)
 
-
 ### Bug Fixes
 
-* export lib ([ad28e28](https://github.com/oclif/oclif/commit/ad28e28c93f1a8490992616b7a7db8755e582060))
-
-
+- export lib ([ad28e28](https://github.com/oclif/oclif/commit/ad28e28c93f1a8490992616b7a7db8755e582060))
 
 ## [0.23.1](https://github.com/oclif/oclif/compare/v0.23.0...v0.23.1) (2018-01-27)
 
-
 ### Bug Fixes
 
-* add other commands ([394b5f0](https://github.com/oclif/oclif/commit/394b5f0d7b5a3bb163fdcec45eadf7e3abcae17c))
-* move generator into this package ([d379e63](https://github.com/oclif/oclif/commit/d379e6321422dcb75e73e019a845920792820c02))
-
-
+- add other commands ([394b5f0](https://github.com/oclif/oclif/commit/394b5f0d7b5a3bb163fdcec45eadf7e3abcae17c))
+- move generator into this package ([d379e63](https://github.com/oclif/oclif/commit/d379e6321422dcb75e73e019a845920792820c02))
 
 # [0.23.0](https://github.com/oclif/oclif/compare/v0.22.0...v0.23.0) (2018-01-26)
 
-
 ### Features
 
-* generator-dxcli@1.15.3 ([338f439](https://github.com/oclif/oclif/commit/338f439af784605470b85f2872554bc992396b54))
-
-
+- generator-dxcli@1.15.3 ([338f439](https://github.com/oclif/oclif/commit/338f439af784605470b85f2872554bc992396b54))
 
 # [0.22.0](https://github.com/oclif/oclif/compare/v0.21.0...v0.22.0) (2018-01-25)
 
-
 ### Features
 
-* generator-dxcli@1.15.2 ([8b1d993](https://github.com/oclif/oclif/commit/8b1d9939d3debbd0eb51e6880a8f34184c682d8a))
-
-
+- generator-dxcli@1.15.2 ([8b1d993](https://github.com/oclif/oclif/commit/8b1d9939d3debbd0eb51e6880a8f34184c682d8a))
 
 # [0.21.0](https://github.com/oclif/oclif/compare/v0.20.0...v0.21.0) (2018-01-25)
 
-
 ### Features
 
-* generator-dxcli@1.15.0 ([fdd7270](https://github.com/oclif/oclif/commit/fdd72705de7cca981ea6a49037933352edc60b92))
-
-
+- generator-dxcli@1.15.0 ([fdd7270](https://github.com/oclif/oclif/commit/fdd72705de7cca981ea6a49037933352edc60b92))
 
 # [0.20.0](https://github.com/oclif/oclif/compare/v0.19.0...v0.20.0) (2018-01-20)
 
-
 ### Features
 
-* generator-dxcli@1.14.4 ([d2a61f9](https://github.com/oclif/oclif/commit/d2a61f9afe10ca26e3e0a9c484649d339e750f05))
-
-
+- generator-dxcli@1.14.4 ([d2a61f9](https://github.com/oclif/oclif/commit/d2a61f9afe10ca26e3e0a9c484649d339e750f05))
 
 # [0.19.0](https://github.com/oclif/oclif/compare/v0.18.0...v0.19.0) (2018-01-20)
 
-
 ### Features
 
-* generator-dxcli@1.14.3 ([b1b8ac3](https://github.com/oclif/oclif/commit/b1b8ac32b04f233448f290907146c8c006ccc305))
-
-
+- generator-dxcli@1.14.3 ([b1b8ac3](https://github.com/oclif/oclif/commit/b1b8ac32b04f233448f290907146c8c006ccc305))
 
 # [0.18.0](https://github.com/oclif/oclif/compare/v0.17.0...v0.18.0) (2018-01-20)
 
-
 ### Features
 
-* generator-dxcli@1.14.2 ([e6c0d87](https://github.com/oclif/oclif/commit/e6c0d871b4734bac89036368841fd08e57c2391d))
-
-
+- generator-dxcli@1.14.2 ([e6c0d87](https://github.com/oclif/oclif/commit/e6c0d871b4734bac89036368841fd08e57c2391d))
 
 # [0.17.0](https://github.com/oclif/oclif/compare/v0.16.0...v0.17.0) (2018-01-20)
 
-
 ### Features
 
-* generator-dxcli@1.14.1 ([a29e7a1](https://github.com/oclif/oclif/commit/a29e7a15a8e9ab452b7abca6137a740848d29167))
-
-
+- generator-dxcli@1.14.1 ([a29e7a1](https://github.com/oclif/oclif/commit/a29e7a15a8e9ab452b7abca6137a740848d29167))
 
 # [0.16.0](https://github.com/oclif/oclif/compare/v0.15.0...v0.16.0) (2018-01-20)
 
-
 ### Features
 
-* generator-dxcli@1.14.0 ([792ba5a](https://github.com/oclif/oclif/commit/792ba5adece9587f32437e8ec4aa7a211c7746bb))
-
-
+- generator-dxcli@1.14.0 ([792ba5a](https://github.com/oclif/oclif/commit/792ba5adece9587f32437e8ec4aa7a211c7746bb))
 
 # [0.15.0](https://github.com/oclif/oclif/compare/v0.14.0...v0.15.0) (2018-01-19)
 
-
 ### Features
 
-* generator-dxcli@1.13.0 ([0240fe8](https://github.com/oclif/oclif/commit/0240fe8c894bd156235d1a03317e629843c49106))
-
-
+- generator-dxcli@1.13.0 ([0240fe8](https://github.com/oclif/oclif/commit/0240fe8c894bd156235d1a03317e629843c49106))
 
 # [0.14.0](https://github.com/oclif/oclif/compare/v0.13.0...v0.14.0) (2018-01-19)
 
-
 ### Features
 
-* generator-dxcli@1.12.3 ([b7bcf58](https://github.com/oclif/oclif/commit/b7bcf58f8611f30d7589c24445a96bfb583c14a6))
-
-
+- generator-dxcli@1.12.3 ([b7bcf58](https://github.com/oclif/oclif/commit/b7bcf58f8611f30d7589c24445a96bfb583c14a6))
 
 # [0.13.0](https://github.com/oclif/oclif/compare/v0.12.0...v0.13.0) (2018-01-19)
 
-
 ### Features
 
-* generator-dxcli@1.12.2 ([3665a3e](https://github.com/oclif/oclif/commit/3665a3e7d6818a052a302f3f679ffbcb2254cc53))
-
-
+- generator-dxcli@1.12.2 ([3665a3e](https://github.com/oclif/oclif/commit/3665a3e7d6818a052a302f3f679ffbcb2254cc53))
 
 # [0.12.0](https://github.com/oclif/oclif/compare/v0.11.0...v0.12.0) (2018-01-19)
 
-
 ### Features
 
-* generator-dxcli@1.12.1 ([87c3b50](https://github.com/oclif/oclif/commit/87c3b5015710cf221fd2e72f79ac0bca62682b41))
-
-
+- generator-dxcli@1.12.1 ([87c3b50](https://github.com/oclif/oclif/commit/87c3b5015710cf221fd2e72f79ac0bca62682b41))
 
 # [0.11.0](https://github.com/oclif/oclif/compare/v0.10.0...v0.11.0) (2018-01-19)
 
-
 ### Features
 
-* generator-dxcli@1.12.0 ([6dca853](https://github.com/oclif/oclif/commit/6dca853dda72e86fd71924d2c9e40cbad877119e))
-
-
+- generator-dxcli@1.12.0 ([6dca853](https://github.com/oclif/oclif/commit/6dca853dda72e86fd71924d2c9e40cbad877119e))
 
 # [0.10.0](https://github.com/oclif/oclif/compare/v0.9.0...v0.10.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.11.5 ([04e4ce1](https://github.com/oclif/oclif/commit/04e4ce1c8d4443bcab504293392082fcc4e7a6f0))
-
-
+- generator-dxcli@1.11.5 ([04e4ce1](https://github.com/oclif/oclif/commit/04e4ce1c8d4443bcab504293392082fcc4e7a6f0))
 
 # [0.9.0](https://github.com/oclif/oclif/compare/v0.8.0...v0.9.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.11.4 ([9aed3c0](https://github.com/oclif/oclif/commit/9aed3c047608874a8abd967d7932342bd0d8751e))
-
-
+- generator-dxcli@1.11.4 ([9aed3c0](https://github.com/oclif/oclif/commit/9aed3c047608874a8abd967d7932342bd0d8751e))
 
 # [0.8.0](https://github.com/oclif/oclif/compare/v0.7.0...v0.8.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.11.3 ([63f333d](https://github.com/oclif/oclif/commit/63f333df49ff7a4daeabd3505678783e044d61c8))
-
-
+- generator-dxcli@1.11.3 ([63f333d](https://github.com/oclif/oclif/commit/63f333df49ff7a4daeabd3505678783e044d61c8))
 
 # [0.7.0](https://github.com/oclif/oclif/compare/v0.6.0...v0.7.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.11.2 ([3eb57a4](https://github.com/oclif/oclif/commit/3eb57a4521aa14ab99a2bdb7bc936556fc4de400))
-
-
+- generator-dxcli@1.11.2 ([3eb57a4](https://github.com/oclif/oclif/commit/3eb57a4521aa14ab99a2bdb7bc936556fc4de400))
 
 # [0.6.0](https://github.com/oclif/oclif/compare/v0.5.0...v0.6.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.11.1 ([847459d](https://github.com/oclif/oclif/commit/847459dc5f3dba0350de23b16920eb81f18f11cf))
-
-
+- generator-dxcli@1.11.1 ([847459d](https://github.com/oclif/oclif/commit/847459dc5f3dba0350de23b16920eb81f18f11cf))
 
 # [0.5.0](https://github.com/oclif/oclif/compare/v0.4.0...v0.5.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.11.0 ([58b907c](https://github.com/oclif/oclif/commit/58b907c3915d0840cb06f17e8c29d98d2f32f9fe))
-
-
+- generator-dxcli@1.11.0 ([58b907c](https://github.com/oclif/oclif/commit/58b907c3915d0840cb06f17e8c29d98d2f32f9fe))
 
 # [0.4.0](https://github.com/oclif/oclif/compare/v0.3.0...v0.4.0) (2018-01-16)
 
-
 ### Features
 
-* generator-dxcli@1.10.5 ([bcea220](https://github.com/oclif/oclif/commit/bcea2202f335c10f47cc78cd1227c07f71d56e75))
-
-
+- generator-dxcli@1.10.5 ([bcea220](https://github.com/oclif/oclif/commit/bcea2202f335c10f47cc78cd1227c07f71d56e75))
 
 # [0.3.0](https://github.com/oclif/oclif/compare/v0.2.4...v0.3.0) (2018-01-16)
 
-
 ### Features
 
-* updated generator-dxcli ([b2be420](https://github.com/oclif/oclif/commit/b2be420ffcd815fc8e5b82664c0464cfdb02d393))
-
-
+- updated generator-dxcli ([b2be420](https://github.com/oclif/oclif/commit/b2be420ffcd815fc8e5b82664c0464cfdb02d393))
 
 ## [0.2.4](https://github.com/oclif/oclif/compare/v0.2.3...v0.2.4) (2018-01-14)
 
-
 ### Bug Fixes
 
-* use latest generator-dxcli ([5bd5145](https://github.com/oclif/oclif/commit/5bd5145d1d4679f75d43dc6f05d323be2d79e410))
-
-
+- use latest generator-dxcli ([5bd5145](https://github.com/oclif/oclif/commit/5bd5145d1d4679f75d43dc6f05d323be2d79e410))
 
 ## [0.2.3](https://github.com/oclif/oclif/compare/v0.2.2...v0.2.3) (2018-01-14)
 
-
 ### Bug Fixes
 
-* add nyc ([a25c802](https://github.com/oclif/oclif/commit/a25c8028b61a1b3de22cb3f9bfa9ce640f237ae0))
-* updated generator ([906425e](https://github.com/oclif/oclif/commit/906425e10af81675669377bf97f27f9d54e8c622))
-
-
+- add nyc ([a25c802](https://github.com/oclif/oclif/commit/a25c8028b61a1b3de22cb3f9bfa9ce640f237ae0))
+- updated generator ([906425e](https://github.com/oclif/oclif/commit/906425e10af81675669377bf97f27f9d54e8c622))
 
 ## [0.2.2](https://github.com/oclif/oclif/compare/v0.2.1...v0.2.2) (2018-01-13)
 
-
 ### Bug Fixes
 
-* updated generator ([4426bd9](https://github.com/oclif/oclif/commit/4426bd9eee6c5b28dfc773c46e3382b608fd8cf5))
-
-
+- updated generator ([4426bd9](https://github.com/oclif/oclif/commit/4426bd9eee6c5b28dfc773c46e3382b608fd8cf5))
 
 ## [0.2.1](https://github.com/oclif/oclif/compare/v0.2.0...v0.2.1) (2018-01-13)
 
-
 ### Bug Fixes
 
-* bump semantic-release ([48b6b4c](https://github.com/oclif/oclif/commit/48b6b4cc422a692b98ca7ecb82ee7f5ac80bde0b))
-* updated generator ([608d365](https://github.com/oclif/oclif/commit/608d3656caf1f6621f37c06151b7b0584b19d26a))
-* updated generator ([08e5c6b](https://github.com/oclif/oclif/commit/08e5c6b0416a07efca43ef8fdbbb41348e5c2e36))
-
-
+- bump semantic-release ([48b6b4c](https://github.com/oclif/oclif/commit/48b6b4cc422a692b98ca7ecb82ee7f5ac80bde0b))
+- updated generator ([608d365](https://github.com/oclif/oclif/commit/608d3656caf1f6621f37c06151b7b0584b19d26a))
+- updated generator ([08e5c6b](https://github.com/oclif/oclif/commit/08e5c6b0416a07efca43ef8fdbbb41348e5c2e36))
 
 # [0.2.0](https://github.com/oclif/oclif/compare/v0.1.0...v0.2.0) (2018-01-13)
 
-
 ### Features
 
-* updated generator ([13e5829](https://github.com/oclif/oclif/commit/13e58295d48ddf388e78c2a584e167ec6e874301))
-
-
+- updated generator ([13e5829](https://github.com/oclif/oclif/commit/13e58295d48ddf388e78c2a584e167ec6e874301))
 
 # [0.1.0](https://github.com/oclif/oclif/compare/6e96584cb7546a15123a5214fbaa69c8507862f7...v0.1.0) (2018-01-13)
 
-
 ### Features
 
-* added generator ([6e96584](https://github.com/oclif/oclif/commit/6e96584cb7546a15123a5214fbaa69c8507862f7))
-* updated generator ([87b5922](https://github.com/oclif/oclif/commit/87b59229a6afdcde70f972fde4b67531b30ed9a7))
-
-
-
+- added generator ([6e96584](https://github.com/oclif/oclif/commit/6e96584cb7546a15123a5214fbaa69c8507862f7))
+- updated generator ([87b5922](https://github.com/oclif/oclif/commit/87b59229a6afdcde70f972fde4b67531b30ed9a7))
diff --git a/CONRTIBUTING.md b/CONRTIBUTING.md
new file mode 100644
index 000000000..5a5e148e6
--- /dev/null
+++ b/CONRTIBUTING.md
@@ -0,0 +1,52 @@
+# Contributing
+
+## Reporting Bugs
+
+When submitting a new bug report, please first [search](https://github.com/oclif/oclif/issues) for an existing or similar report & then use one of our existing [issue templates](https://github.com/oclif/oclif/issues/new/choose) if you believe you've come across a unique problem. Duplicate issues, or issues that don't use one of our templates may get closed without a response.
+
+## Development
+
+**1. Clone this repository...**
+
+```bash
+$ git clone git@github.com:oclif/oclif.git
+```
+
+**2. Navigate into project & install development-specific dependencies...**
+
+```bash
+$ cd ./oclif && yarn
+```
+
+**3. Write some code &/or add some tests...**
+
+```bash
+...
+```
+
+**4. Run tests & ensure they pass...**
+
+```
+$ yarn test
+```
+
+**5. Open a [Pull Request](https://github.com/oclif/oclif/pulls) for your work & become the newest contributor to `oclif`! 🎉**
+
+## Pull Request Conventions
+
+We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/). When opening a pull request, please be sure that either the pull request title, or each commit in the pull request, has one of the following prefixes:
+
+- `feat`: For when introducing a new feature. The result will be a new semver minor version of the package when it is next published.
+- `fix`: For bug fixes. The result will be a new semver patch version of the package when it is next published.
+- `docs`: For documentation updates. The result will be a new semver patch version of the package when it is next published.
+- `chore`: For changes that do not affect the published module. Often these are changes to tests. The result will be _no_ change to the version of the package when it is next published (as the commit does not affect the published version).
+
+## What _not_ to contribute?
+
+### Dependencies
+
+It should be noted that our team does not accept third-party dependency updates/PRs. We use dependabot to ensure dependencies are staying up-to-date & will ship security patches for CVEs as they occur. If you submit a PR trying to update our dependencies we will close it with or without a reference to these contribution guidelines.
+
+### Tools/Automation
+
+Our core team is responsible for the maintenance of the tooling/automation in this project & we ask collaborators to kindly not make changes to these when contributing (ex. `.github/*`, `.eslintrc.json`, package.json `scripts`, etc.)
diff --git a/README.md b/README.md
index b2448a4d6..09b66109b 100644
--- a/README.md
+++ b/README.md
@@ -1,59 +1,42 @@
-
 <img src="https://user-images.githubusercontent.com/449385/38243295-e0a47d58-372e-11e8-9bc0-8c02a6f4d2ac.png" width="260" height="73">
 
-
-oclif: Node.JS Open CLI Framework
-=================================
+# `oclif` CLI
 
 [![Version](https://img.shields.io/npm/v/oclif.svg)](https://npmjs.org/package/oclif)
-[![Downloads/week](https://img.shields.io/npm/dw/@oclif/command.svg)](https://npmjs.org/package/@oclif/core)
+[![Downloads/week](https://img.shields.io/npm/dw/oclif.svg)](https://npmjs.org/package/oclif/oclif)
 [![License](https://img.shields.io/npm/l/oclif.svg)](https://github.com/oclif/oclif/blob/main/package.json)
 
 <!-- toc -->
-* [🗒 Description](#-description)
-* [🚀 Getting Started Tutorial](#-getting-started-tutorial)
-* [✨ Features](#-features)
-* [📌 Requirements](#-requirements)
-* [📌 Migrating from V1](#-migrating-from-v1)
-* [🏗 Usage](#-usage)
-* [📚 Examples](#-examples)
-* [🔨 Commands](#-commands)
-* [🏭 Related Repositories](#-related-repositories)
-* [🦔 Learn More](#-learn-more)
-* [📣 Feedback](#-feedback)
+
+- [`oclif` CLI](#oclif-cli)
+- [🗒 Description](#-description)
+- [🚀 Getting Started Tutorial](#-getting-started-tutorial)
+- [📌 Requirements](#-requirements)
+- [📌 Migrating from V1](#-migrating-from-v1)
+- [🏗 Usage](#-usage)
+- [📚 Examples](#-examples)
+- [🔨 Commands](#-commands)
+- [Command Topics](#command-topics)
+- [🚀 Contributing](#-contributing)
+- [🏭 Related Repositories](#-related-repositories)
+- [🦔 Learn More](#-learn-more)
 <!-- tocstop -->
 
 # 🗒 Description
 
-This is a framework for building CLIs in Node.js. This framework was built out of the [Heroku CLI](https://cli.heroku.com) but generalized to build any custom CLI. It's designed both for single-file CLIs with a few flag options, or for very complex CLIs that have subcommands (like git or heroku).
+This is the `oclif` CLI for the [Open CLI Framework](https://github.com/oclif/core), that supports the development of oclif plugins and CLIs.
 
-[See the docs for more information](http://oclif.io/docs/introduction).
+[See the docs for more information](http://oclif.io).
 
 # 🚀 Getting Started Tutorial
 
 The [Getting Started tutorial](http://oclif.io/docs/introduction) is a step-by-step guide to introduce you to oclif. If you have not developed anything in a command line before, this tutorial is a great place to get started.
 
-# ✨ Features
-
-* **Flag/Argument parsing** - No CLI framework would be complete without a flag parser. We've built a custom one from years of experimentation that we feel consistently handles user input flexible enough for the user to be able to use the CLI in ways they expect, but without compromising strictness guarantees to the developer.
-* **Super Speed** - The overhead for running an oclif CLI command is almost nothing. [It requires very few dependencies](https://www.npmjs.com/package/@oclif/command?activeTab=dependencies) (only 35 dependencies in a minimal setup—including all transitive dependencies). Also, only the command to be executed will be required with node. So large CLIs with many commands will load equally as fast as a small one with a single command.
-* **CLI Generator** - Run a single command to scaffold out a fully functional CLI and get started quickly. See [Usage](#-usage) below.
-* **Testing Helpers** - We've put a lot of work into making commands easier to test and mock out stdout/stderr. The generator will automatically create [scaffolded tests](https://github.com/oclif/hello-world/blob/main/test/commands/hello.test.ts).
-* **Auto-documentation** - By default you can pass `--help` to the CLI to get help such as flag options and argument information. This information is also automatically placed in the README whenever the npm package of the CLI is published. See the [multi-command CLI example](https://github.com/oclif/example-multi-ts)
-* **Plugins** - Using [plugins](https://oclif.io/docs/plugins), users of the CLI can extend it with new functionality, a CLI can be split into modular components, and functionality can be shared amongst multiple CLIs. See [Building your own plugin](https://oclif.io/docs/plugins#building-your-own-plugin).
-* **Hooks** - Use lifecycle hooks to run functionality any time a CLI starts, or on custom triggers. Use this whenever custom functionality needs to be shared between various components of the CLI.
-* **TypeScript** - Everything in the core of oclif is written in TypeScript and the generator will build fully configured TypeScript CLIs. If you use plugins support, the CLI will automatically use `ts-node` to run the plugins enabling you to use TypeScript with minimal-to-no boilerplate needed for any oclif CLI.
-* **Auto-updating Installers** - oclif can package your CLI into [different installers](https://oclif.io/docs/releasing) that will not require the user to already have node installed on the machine. These can be made auto-updatable by using [plugin-update](https://github.com/oclif/plugin-update).
-* **Everything is Customizable** - Pretty much anything can be swapped out and replaced inside oclif if needed—including the arg/flag parser.
-* **Autocomplete** - Automatically include autocomplete for your CLI. This includes not only command names and flag names, but flag values as well. For example, it's possible to configure the Heroku CLI to have completions for Heroku app names:
-
-```
-$ heroku info --app=<tab><tab> # will complete with all the Heroku apps a user has in their account
-```
+See [Usage](#-usage) below for an overview of the `oclif` CLI.
 
 # 📌 Requirements
 
-Currently, Node 12+ is supported. We support the [LTS versions](https://nodejs.org/en/about/releases) of Node. You can add the [node](https://www.npmjs.com/package/node) package to your CLI to ensure users are running a specific version of Node.
+Currently, Node 18+ is supported. We support the [LTS versions](https://nodejs.org/en/about/releases) of Node. You can add the [node](https://www.npmjs.com/package/node) package to your CLI to ensure users are running a specific version of Node.
 
 # 📌 Migrating from V1
 
@@ -69,6 +52,7 @@ If you have been using version 1 of the [`oclif` CLI](https://github.com/oclif/o
 ## New Commands
 
 Version 2 now includes all the commands from the [`oclif-dev` CLI](https://github.com/oclif/dev-cli). This means that you can now use a single CLI for all your oclif needs. These commands include:
+
 - `oclif manifest`
 - `oclif pack`
 - `oclif pack:deb`
@@ -80,7 +64,6 @@ Version 2 now includes all the commands from the [`oclif-dev` CLI](https://githu
 - `oclif upload:win` (formerly known as `oclif-dev publish:win`)
 - `oclif readme`
 
-
 # 🏗 Usage
 
 Creating a CLI:
@@ -89,9 +72,9 @@ Creating a CLI:
 $ npx oclif generate mynewcli
 ? npm package name (mynewcli): mynewcli
 $ cd mynewcli
-$ ./bin/run --version
+$ ./bin/run.js --version
 mynewcli/0.0.0 darwin-x64 node-v9.5.0
-$ ./bin/run --help
+$ ./bin/run.js --help
 USAGE
   $ mynewcli [COMMAND]
 
@@ -99,335 +82,43 @@ COMMANDS
   hello
   help   display help for mynewcli
 
-$ ./bin/run hello
-hello world from ./src/hello.js!
+$ ./bin/run.js hello world
+hello world! (./src/commands/hello/world.ts)
 ```
 
 # 📚 Examples
 
-* [Hello-World](https://github.com/oclif/hello-world)
-* [Salesforce CLI](https://github.com/salesforcecli/cli)
-* [Heroku CLI](https://github.com/heroku/cli)
+- [Hello-World](https://github.com/oclif/hello-world)
+- [Salesforce CLI](https://github.com/salesforcecli/cli)
+- [Heroku CLI](https://github.com/heroku/cli)
 
 # 🔨 Commands
 
 <!-- commands -->
-* [`oclif generate NAME`](#oclif-generate-name)
-* [`oclif generate command NAME`](#oclif-generate-command-name)
-* [`oclif generate hook NAME`](#oclif-generate-hook-name)
-* [`oclif help [COMMAND]`](#oclif-help-command)
-* [`oclif manifest [PATH]`](#oclif-manifest-path)
-* [`oclif pack deb`](#oclif-pack-deb)
-* [`oclif pack macos`](#oclif-pack-macos)
-* [`oclif pack tarballs`](#oclif-pack-tarballs)
-* [`oclif pack win`](#oclif-pack-win)
-* [`oclif promote`](#oclif-promote)
-* [`oclif readme`](#oclif-readme)
-* [`oclif upload deb`](#oclif-upload-deb)
-* [`oclif upload macos`](#oclif-upload-macos)
-* [`oclif upload tarballs`](#oclif-upload-tarballs)
-* [`oclif upload win`](#oclif-upload-win)
-
-## `oclif generate NAME`
-
-generate a new CLI
-
-```
-USAGE
-  $ oclif generate [NAME]
-
-ARGUMENTS
-  NAME  directory name of new project
-
-DESCRIPTION
-  generate a new CLI
-
-  This will clone the template repo 'oclif/hello-world' and update package properties
-```
-
-_See code: [src/commands/generate.ts](https://github.com/oclif/oclif/blob/v3.2.1/src/commands/generate.ts)_
-
-## `oclif generate command NAME`
-
-add a command to an existing CLI or plugin
-
-```
-USAGE
-  $ oclif generate command [NAME] [--force]
-
-ARGUMENTS
-  NAME  name of command
-
-FLAGS
-  --force  overwrite existing files
-
-DESCRIPTION
-  add a command to an existing CLI or plugin
-```
-
-## `oclif generate hook NAME`
-
-add a hook to an existing CLI or plugin
-
-```
-USAGE
-  $ oclif generate hook [NAME] [--force] [--event <value>]
-
-ARGUMENTS
-  NAME  name of hook (snake_case)
-
-FLAGS
-  --event=<value>  [default: init] event to run hook on
-  --force          overwrite existing files
-
-DESCRIPTION
-  add a hook to an existing CLI or plugin
-```
-
-## `oclif help [COMMAND]`
-
-Display help for oclif.
-
-```
-USAGE
-  $ oclif help [COMMAND] [-n]
-
-ARGUMENTS
-  COMMAND  Command to show help for.
-
-FLAGS
-  -n, --nested-commands  Include all nested commands in the output.
-
-DESCRIPTION
-  Display help for oclif.
-```
-
-_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.1.12/src/commands/help.ts)_
-
-## `oclif manifest [PATH]`
-
-generates plugin manifest json
-
-```
-USAGE
-  $ oclif manifest [PATH]
-
-ARGUMENTS
-  PATH  [default: .] path to plugin
-
-DESCRIPTION
-  generates plugin manifest json
-```
-
-_See code: [src/commands/manifest.ts](https://github.com/oclif/oclif/blob/v3.2.1/src/commands/manifest.ts)_
-
-## `oclif pack deb`
-
-pack CLI into debian package
-
-```
-USAGE
-  $ oclif pack deb -r <value> [-t <value>]
-
-FLAGS
-  -r, --root=<value>     (required) [default: .] path to oclif CLI root
-  -t, --tarball=<value>  optionally specify a path to a tarball already generated by NPM
-
-DESCRIPTION
-  pack CLI into debian package
-```
-
-## `oclif pack macos`
-
-pack CLI into macOS .pkg
-
-```
-USAGE
-  $ oclif pack macos -r <value> [-t <value>]
-
-FLAGS
-  -r, --root=<value>     (required) [default: .] path to oclif CLI root
-  -t, --tarball=<value>  optionally specify a path to a tarball already generated by NPM
-
-DESCRIPTION
-  pack CLI into macOS .pkg
-```
-
-## `oclif pack tarballs`
 
-packages oclif CLI into tarballs
+# Command Topics
 
-```
-USAGE
-  $ oclif pack tarballs -r <value> [-t <value>] [--xz] [--parallel] [-l <value>]
-
-FLAGS
-  -l, --tarball=<value>  optionally specify a path to a tarball already generated by NPM
-  -r, --root=<value>     (required) [default: .] path to oclif CLI root
-  -t, --targets=<value>  comma-separated targets to pack (e.g.: linux-arm,win32-x64)
-  --parallel             build tarballs in parallel
-  --[no-]xz              also build xz
-
-DESCRIPTION
-  packages oclif CLI into tarballs
-
-  This can be used to create oclif CLIs that use the system node or that come preloaded with a node binary.
-```
-
-## `oclif pack win`
-
-create windows installer from oclif CLI
-
-```
-USAGE
-  $ oclif pack win -r <value> [-t <value>]
-
-FLAGS
-  -r, --root=<value>     (required) [default: .] path to oclif CLI root
-  -t, --tarball=<value>  optionally specify a path to a tarball already generated by NPM
-
-DESCRIPTION
-  create windows installer from oclif CLI
-
-  This command requires WINDOWS_SIGNING (prefixed with the name of your executable, e.g. OCLIF_WINDOWS_SIGNING_PASS) to
-  be set in the environment
-```
-
-## `oclif promote`
-
-promote CLI builds to a S3 release channel
-
-```
-USAGE
-  $ oclif promote -r <value> --version <value> --sha <value> --channel <value> [-t <value>] [-d] [-m] [-w]
-    [-a <value>] [--xz] [--indexes]
-
-FLAGS
-  -a, --max-age=<value>  [default: 86400] cache control max-age in seconds
-  -d, --deb              promote debian artifacts
-  -m, --macos            promote macOS pkg
-  -r, --root=<value>     (required) [default: .] path to the oclif CLI project root
-  -t, --targets=<value>  comma-separated targets to promote (e.g.: linux-arm,win32-x64)
-  -w, --win              promote Windows exe
-  --channel=<value>      (required) [default: stable] which channel to promote to
-  --indexes              append the promoted urls into the index files
-  --sha=<value>          (required) 7-digit short git commit SHA of the CLI to promote
-  --version=<value>      (required) semantic version of the CLI to promote
-  --[no-]xz              also upload xz
-
-DESCRIPTION
-  promote CLI builds to a S3 release channel
-```
-
-_See code: [src/commands/promote.ts](https://github.com/oclif/oclif/blob/v3.2.1/src/commands/promote.ts)_
-
-## `oclif readme`
-
-adds commands to README.md in current directory
-
-```
-USAGE
-  $ oclif readme --dir <value> [--multi] [--aliases]
-
-FLAGS
-  --[no-]aliases  include aliases in the command list
-  --dir=<value>   (required) [default: docs] output directory for multi docs
-  --multi         create a different markdown page for each topic
-
-DESCRIPTION
-  adds commands to README.md in current directory
-
-  The readme must have any of the following tags inside of it for it to be replaced or else it will do nothing:
-
-  # Usage
-
-  <!-- usage -->
-
-  # Commands
-
-  <!-- commands -->
-
-  Customize the code URL prefix by setting oclif.repositoryPrefix in package.json.
-```
+- [`oclif generate`](docs/generate.md) - Generate a new CLI
+- [`oclif help`](docs/help.md) - Display help for oclif.
+- [`oclif init`](docs/init.md) - Initialize a new oclif CLI
+- [`oclif manifest`](docs/manifest.md) - Generates plugin manifest json (oclif.manifest.json).
+- [`oclif pack`](docs/pack.md) - Package an oclif CLI into installable artifacts.
+- [`oclif promote`](docs/promote.md) - Promote CLI builds to a S3 release channel.
+- [`oclif readme`](docs/readme.md) - Adds commands to README.md in current directory.
+- [`oclif upload`](docs/upload.md) - Upload installable CLI artifacts to AWS S3.
 
-_See code: [src/commands/readme.ts](https://github.com/oclif/oclif/blob/v3.2.1/src/commands/readme.ts)_
-
-## `oclif upload deb`
-
-upload deb package built with pack:deb
-
-```
-USAGE
-  $ oclif upload deb -r <value>
-
-FLAGS
-  -r, --root=<value>  (required) [default: .] path to oclif CLI root
-
-DESCRIPTION
-  upload deb package built with pack:deb
-```
-
-## `oclif upload macos`
-
-upload macos installers built with pack:macos
-
-```
-USAGE
-  $ oclif upload macos -r <value>
-
-FLAGS
-  -r, --root=<value>  (required) [default: .] path to oclif CLI root
-
-DESCRIPTION
-  upload macos installers built with pack:macos
-```
-
-## `oclif upload tarballs`
-
-upload an oclif CLI to S3
-
-```
-USAGE
-  $ oclif upload tarballs -r <value> [-t <value>] [--xz]
-
-FLAGS
-  -r, --root=<value>     (required) [default: .] path to oclif CLI root
-  -t, --targets=<value>  comma-separated targets to upload (e.g.: linux-arm,win32-x64)
-  --[no-]xz              also upload xz
-
-DESCRIPTION
-  upload an oclif CLI to S3
-
-  "aws-sdk" will need to be installed as a devDependency to upload.
-```
-
-## `oclif upload win`
-
-upload windows installers built with pack:win
-
-```
-USAGE
-  $ oclif upload win -r <value>
+<!-- commandsstop -->
 
-FLAGS
-  -r, --root=<value>  (required) [default: .] path to oclif CLI root
+# 🚀 Contributing
 
-DESCRIPTION
-  upload windows installers built with pack:win
-```
-<!-- commandsstop -->
+See the [contributing guide](./CONRTIBUTING.md).
 
 # 🏭 Related Repositories
 
-* [@oclif/core](https://github.com/oclif/core) - Base library for oclif. This can be used directly without the generator.
-* [@oclif/cli-ux](https://github.com/oclif/cli-ux) - Library for common CLI UI utilities.
-* [@oclif/test](https://github.com/oclif/test) - Test helper for oclif.
+- [@oclif/core](https://github.com/oclif/core) - Base library for oclif. This can be used directly without the generator.
+- [@oclif/test](https://github.com/oclif/test) - Test helper for oclif.
 
 # 🦔 Learn More
 
-* [Salesforce Release Announcement](https://engineering.salesforce.com/open-sourcing-oclif-the-cli-framework-that-powers-our-clis-21fbda99d33a)
-* [Heroku Release Announcement](https://blog.heroku.com/open-cli-framework)
-
-# 📣 Feedback
-
-If you have any suggestions or want to let us know what you think of oclif, send us a message at <alm-cli@salesforce.com>
+- [Salesforce Release Announcement](https://engineering.salesforce.com/open-sourcing-oclif-the-cli-framework-that-powers-our-clis-21fbda99d33a)
+- [Heroku Release Announcement](https://blog.heroku.com/open-cli-framework)
diff --git a/bin/dev b/bin/dev
deleted file mode 100755
index e3df35aca..000000000
--- a/bin/dev
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env node
-
-const oclif = require('@oclif/core')
-
-const path = require('path')
-const project = path.join(__dirname, '..', 'tsconfig.json')
-
-// In dev mode -> use ts-node and dev plugins
-process.env.NODE_ENV = 'development'
-
-require('ts-node').register({project})
-
-// In dev mode, always show stack traces
-oclif.settings.debug = true;
-
-
-// Start the CLI
-oclif.run().then(oclif.flush).catch(oclif.Errors.handle)
diff --git a/bin/dev.js b/bin/dev.js
new file mode 100755
index 000000000..2bb218bcb
--- /dev/null
+++ b/bin/dev.js
@@ -0,0 +1,6 @@
+#!/usr/bin/env ts-node
+// eslint-disable-next-line node/shebang, unicorn/prefer-top-level-await
+;(async () => {
+  const oclif = await import('@oclif/core')
+  await oclif.execute({development: true, dir: __dirname})
+})()
diff --git a/bin/run b/bin/run
deleted file mode 100755
index a7635de86..000000000
--- a/bin/run
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env node
-
-const oclif = require('@oclif/core')
-
-oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle'))
diff --git a/bin/run.js b/bin/run.js
new file mode 100755
index 000000000..97b11a3a3
--- /dev/null
+++ b/bin/run.js
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+
+// eslint-disable-next-line unicorn/prefer-top-level-await
+;(async () => {
+  const oclif = await import('@oclif/core')
+  await oclif.execute({dir: __dirname})
+})()
diff --git a/docs/generate.md b/docs/generate.md
new file mode 100644
index 000000000..29fee1760
--- /dev/null
+++ b/docs/generate.md
@@ -0,0 +1,109 @@
+# `oclif generate`
+
+Generate a new CLI
+
+- [`oclif generate NAME`](#oclif-generate-name)
+- [`oclif generate command NAME`](#oclif-generate-command-name)
+- [`oclif generate hook NAME`](#oclif-generate-hook-name)
+
+## `oclif generate NAME`
+
+Generate a new CLI
+
+```
+USAGE
+  $ oclif generate NAME [--author <value>] [--bin <value>] [--description <value>] [--license <value>]
+    [--module-type CommonJS|ESM] [--name <value>] [--owner <value>] [--package-manager npm|yarn|pnpm] [--repository
+    <value>] [-n] [-d <value>] [-y]
+
+ARGUMENTS
+  NAME  Directory name of new project.
+
+FLAGS
+  -d, --output-dir=<value>        Directory to build the CLI in.
+  -n, --dry-run                   Print the files that would be created without actually creating them.
+  -y, --yes                       Use defaults for all prompts. Individual flags will override defaults.
+      --author=<value>            Supply answer for prompt: Author
+      --bin=<value>               Supply answer for prompt: Command bin name the CLI will export
+      --description=<value>       Supply answer for prompt: Description
+      --license=<value>           Supply answer for prompt: License
+      --module-type=<option>      Supply answer for prompt: Select a module type
+                                  <options: CommonJS|ESM>
+      --name=<value>              Supply answer for prompt: NPM package name
+      --owner=<value>             Supply answer for prompt: Who is the GitHub owner of repository
+                                  (https://github.com/OWNER/repo)
+      --package-manager=<option>  Supply answer for prompt: Select a package manager
+                                  <options: npm|yarn|pnpm>
+      --repository=<value>        Supply answer for prompt: What is the GitHub name of repository
+                                  (https://github.com/owner/REPO)
+
+DESCRIPTION
+  Generate a new CLI
+
+  This will generate a fully functional oclif CLI that you can build on. It will prompt you for all the necessary
+  information to get started. If you want to skip the prompts, you can pass the --yes flag to accept the defaults for
+  all prompts. You can also pass individual flags to set specific values for prompts.
+
+  Head to oclif.io/docs/introduction to learn more about building CLIs with oclif.
+
+EXAMPLES
+  Generate a new CLI with prompts for all properties
+
+    $ oclif generate my-cli
+
+  Automatically accept default values for all prompts
+
+    $ oclif generate my-cli --yes
+
+  Supply answers for specific prompts
+
+    $ oclif generate my-cli --module-type CommonJS --author "John Doe"
+
+  Supply answers for specific prompts and accept default values for the rest
+
+    $ oclif generate my-cli --module-type CommonJS --author "John Doe" --yes
+```
+
+_See code: [src/commands/generate.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/generate.ts)_
+
+## `oclif generate command NAME`
+
+Add a command to an existing CLI or plugin.
+
+```
+USAGE
+  $ oclif generate command NAME [--commands-dir <value>] [--force]
+
+ARGUMENTS
+  NAME  name of command
+
+FLAGS
+  --commands-dir=<value>  [default: src/commands] The directory to create the command in.
+  --force                 Overwrite existing files.
+
+DESCRIPTION
+  Add a command to an existing CLI or plugin.
+```
+
+_See code: [src/commands/generate/command.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/generate/command.ts)_
+
+## `oclif generate hook NAME`
+
+Add a hook to an existing CLI or plugin.
+
+```
+USAGE
+  $ oclif generate hook NAME [--event <value>] [--force]
+
+ARGUMENTS
+  NAME  Name of hook (snake_case).
+
+FLAGS
+  --event=<value>  [default: init] Event to run hook on.
+  --force          Overwrite existing files.
+
+DESCRIPTION
+  Add a hook to an existing CLI or plugin.
+```
+
+_See code: [src/commands/generate/hook.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/generate/hook.ts)_
diff --git a/docs/help.md b/docs/help.md
new file mode 100644
index 000000000..1dcc75dab
--- /dev/null
+++ b/docs/help.md
@@ -0,0 +1,25 @@
+# `oclif help`
+
+Display help for oclif.
+
+- [`oclif help [COMMAND]`](#oclif-help-command)
+
+## `oclif help [COMMAND]`
+
+Display help for oclif.
+
+```
+USAGE
+  $ oclif help [COMMAND...] [-n]
+
+ARGUMENTS
+  COMMAND...  Command to show help for.
+
+FLAGS
+  -n, --nested-commands  Include all nested commands in the output.
+
+DESCRIPTION
+  Display help for oclif.
+```
+
+_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/6.2.17/src/commands/help.ts)_
diff --git a/docs/init.md b/docs/init.md
new file mode 100644
index 000000000..775bb2869
--- /dev/null
+++ b/docs/init.md
@@ -0,0 +1,46 @@
+# `oclif init`
+
+Initialize a new oclif CLI
+
+- [`oclif init`](#oclif-init)
+
+## `oclif init`
+
+Initialize a new oclif CLI
+
+```
+USAGE
+  $ oclif init [--bin <value>] [--module-type ESM|CommonJS] [--package-manager npm|yarn|pnpm]
+    [--topic-separator colons|spaces] [-d <value>] [-y]
+
+FLAGS
+  -d, --output-dir=<value>        Directory to initialize the CLI in.
+  -y, --yes                       Use defaults for all prompts. Individual flags will override defaults.
+      --bin=<value>               Supply answer for prompt: Command bin name the CLI will export
+      --module-type=<option>      Supply answer for prompt: Select a module type
+                                  <options: ESM|CommonJS>
+      --package-manager=<option>  Supply answer for prompt: Select a package manager
+                                  <options: npm|yarn|pnpm>
+      --topic-separator=<option>  Supply answer for prompt: Select a topic separator
+                                  <options: colons|spaces>
+
+DESCRIPTION
+  Initialize a new oclif CLI
+
+  This will add the necessary oclif bin files, add oclif config to package.json, and install @oclif/core and ts-node.
+
+EXAMPLES
+  Initialize a new CLI in the current directory
+
+    $ oclif init
+
+  Initialize a new CLI in a different directory
+
+    $ oclif init --output-dir "/path/to/existing/project"
+
+  Supply answers for specific prompts
+
+    $ oclif init --topic-separator colons --bin mycli
+```
+
+_See code: [src/commands/init.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/init.ts)_
diff --git a/docs/manifest.md b/docs/manifest.md
new file mode 100644
index 000000000..ccf7cfd1c
--- /dev/null
+++ b/docs/manifest.md
@@ -0,0 +1,25 @@
+# `oclif manifest`
+
+Generates plugin manifest json (oclif.manifest.json).
+
+- [`oclif manifest [PATH]`](#oclif-manifest-path)
+
+## `oclif manifest [PATH]`
+
+Generates plugin manifest json (oclif.manifest.json).
+
+```
+USAGE
+  $ oclif manifest [PATH] [--jit]
+
+ARGUMENTS
+  PATH  [default: .] Path to plugin.
+
+FLAGS
+  --[no-]jit  Append commands from JIT plugins in manifest.
+
+DESCRIPTION
+  Generates plugin manifest json (oclif.manifest.json).
+```
+
+_See code: [src/commands/manifest.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/manifest.ts)_
diff --git a/docs/pack.md b/docs/pack.md
new file mode 100644
index 000000000..94350fdc0
--- /dev/null
+++ b/docs/pack.md
@@ -0,0 +1,124 @@
+# `oclif pack`
+
+Package an oclif CLI into installable artifacts.
+
+- [`oclif pack deb`](#oclif-pack-deb)
+- [`oclif pack macos`](#oclif-pack-macos)
+- [`oclif pack tarballs`](#oclif-pack-tarballs)
+- [`oclif pack win`](#oclif-pack-win)
+
+## `oclif pack deb`
+
+Pack CLI into debian package.
+
+```
+USAGE
+  $ oclif pack deb -r <value> [-z gzip|none|xz|zstd] [--prune-lockfiles | -t <value>]
+
+FLAGS
+  -r, --root=<value>          (required) [default: .] Path to oclif CLI root.
+  -t, --tarball=<value>       Optionally specify a path to a tarball already generated by NPM.
+  -z, --compression=<option>  Override the default compression used by dpkg-deb.
+                              <options: gzip|none|xz|zstd>
+      --prune-lockfiles       remove lockfiles in the tarball.
+
+DESCRIPTION
+  Pack CLI into debian package.
+
+  Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.
+
+FLAG DESCRIPTIONS
+  -z, --compression=gzip|none|xz|zstd  Override the default compression used by dpkg-deb.
+
+    For more details see the `-Zcompress-type` section at https://man7.org/linux/man-pages/man1/dpkg-deb.1.html
+```
+
+_See code: [src/commands/pack/deb.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/pack/deb.ts)_
+
+## `oclif pack macos`
+
+Pack CLI into macOS .pkg
+
+```
+USAGE
+  $ oclif pack macos -r <value> [--prune-lockfiles | -t <value>] [--targets <value>]
+
+FLAGS
+  -r, --root=<value>     (required) [default: .] Path to oclif CLI root.
+  -t, --tarball=<value>  Optionally specify a path to a tarball already generated by NPM.
+      --prune-lockfiles  remove lockfiles in the tarball.
+      --targets=<value>  Comma-separated targets to pack (e.g.: darwin-x64,darwin-arm64).
+
+DESCRIPTION
+  Pack CLI into macOS .pkg
+
+  Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.
+```
+
+_See code: [src/commands/pack/macos.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/pack/macos.ts)_
+
+## `oclif pack tarballs`
+
+Package oclif CLI into tarballs.
+
+```
+USAGE
+  $ oclif pack tarballs -r <value> [--parallel] [--prune-lockfiles] [-l <value>] [-t <value>] [--xz]
+
+FLAGS
+  -l, --tarball=<value>  Optionally specify a path to a tarball already generated by NPM.
+  -r, --root=<value>     (required) [default: .] Path to oclif CLI root.
+  -t, --targets=<value>  Comma-separated targets to pack (e.g.: linux-arm,win32-x64).
+      --parallel         Build tarballs in parallel.
+      --prune-lockfiles  remove lockfiles in the tarball.
+      --[no-]xz          Also build xz.
+
+DESCRIPTION
+  Package oclif CLI into tarballs.
+
+  This can be used to create oclif CLIs that use the system node or that come preloaded with a node binary.
+
+  Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.
+```
+
+_See code: [src/commands/pack/tarballs.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/pack/tarballs.ts)_
+
+## `oclif pack win`
+
+Create windows installer from oclif CLI
+
+```
+USAGE
+  $ oclif pack win -r <value> [--defender-exclusion checked|unchecked|hidden] [--prune-lockfiles | -t <value>]
+    [--targets <value>]
+
+FLAGS
+  -r, --root=<value>                 (required) [default: .] Path to oclif CLI root.
+  -t, --tarball=<value>              Optionally specify a path to a tarball already generated by NPM.
+      --defender-exclusion=<option>  [default: checked] Set to "checked" or "unchecked" to set the default value for the
+                                     checkbox.  Set to "hidden" to hide the option (will let defender do its thing).
+                                     <options: checked|unchecked|hidden>
+      --prune-lockfiles              remove lockfiles in the tarball.
+      --targets=<value>              Comma-separated targets to pack (e.g.: win32-x64,win32-x86,win32-arm64).
+
+DESCRIPTION
+  Create windows installer from oclif CLI
+
+  You need to have 7zip, nsis (makensis), and grep installed on your machine in order to run this command.
+
+  This command will produce unsigned installers unless you supply WINDOWS_SIGNING_PASS (prefixed with the name of your
+  executable, e.g. OCLIF_WINDOWS_SIGNING_PASS) in the environment and have set the windows.name and windows.keypath
+  properties in your package.json's oclif property.
+
+  Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.
+
+FLAG DESCRIPTIONS
+  --defender-exclusion=checked|unchecked|hidden
+
+    Set to "checked" or "unchecked" to set the default value for the checkbox.  Set to "hidden" to hide the option (will
+    let defender do its thing).
+
+    There is no way to set a hidden checkbox with "true" as a default...the user can always allow full security
+```
+
+_See code: [src/commands/pack/win.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/pack/win.ts)_
diff --git a/docs/promote.md b/docs/promote.md
new file mode 100644
index 000000000..adb9dd992
--- /dev/null
+++ b/docs/promote.md
@@ -0,0 +1,35 @@
+# `oclif promote`
+
+Promote CLI builds to a S3 release channel.
+
+- [`oclif promote`](#oclif-promote)
+
+## `oclif promote`
+
+Promote CLI builds to a S3 release channel.
+
+```
+USAGE
+  $ oclif promote --channel <value> -r <value> --sha <value> --version <value> [-d] [--dry-run]
+    [--ignore-missing] [--indexes] [-m] [-a <value>] [-t <value>] [-w] [--xz]
+
+FLAGS
+  -a, --max-age=<value>  [default: 86400] Cache control max-age in seconds.
+  -d, --deb              Promote debian artifacts.
+  -m, --macos            Promote macOS pkg.
+  -r, --root=<value>     (required) [default: .] Path to the oclif CLI project root.
+  -t, --targets=<value>  Comma-separated targets to promote (e.g.: linux-arm,win32-x64).
+  -w, --win              Promote Windows exe.
+      --channel=<value>  (required) [default: stable] Channel to promote to.
+      --dry-run          Run the command without uploading to S3 or copying versioned tarballs/installers to channel.
+      --ignore-missing   Ignore missing tarballs/installers and continue promoting the rest.
+      --indexes          Append the promoted urls into the index files.
+      --sha=<value>      (required) 7-digit short git commit SHA of the CLI to promote.
+      --version=<value>  (required) Semantic version of the CLI to promote.
+      --[no-]xz          Also upload xz.
+
+DESCRIPTION
+  Promote CLI builds to a S3 release channel.
+```
+
+_See code: [src/commands/promote.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/promote.ts)_
diff --git a/docs/readme.md b/docs/readme.md
new file mode 100644
index 000000000..5180f2da5
--- /dev/null
+++ b/docs/readme.md
@@ -0,0 +1,43 @@
+# `oclif readme`
+
+Adds commands to README.md in current directory.
+
+- [`oclif readme`](#oclif-readme)
+
+## `oclif readme`
+
+Adds commands to README.md in current directory.
+
+```
+USAGE
+  $ oclif readme --output-dir <value> --readme-path <value> [--aliases] [--dry-run] [--nested-topics-depth
+    <value> --multi] [--plugin-directory <value>] [--repository-prefix <value>] [--tsconfig-path <value>] [--version
+    <value>]
+
+FLAGS
+  --[no-]aliases                 Include aliases in the command list.
+  --dry-run                      Prints the generated README without modifying the file.
+  --multi                        Create a different markdown page for each topic.
+  --nested-topics-depth=<value>  Max nested topics depth for multi markdown page generation. Use with --multi enabled.
+  --output-dir=<value>           (required) [default: docs] Output directory for multi docs.
+  --plugin-directory=<value>     Plugin directory to generate README for. Defaults to the current directory.
+  --readme-path=<value>          (required) [default: README.md] Path to the README file.
+  --repository-prefix=<value>    A template string used to build links to the source code.
+  --tsconfig-path=<value>        [default: tsconfig.json] Path to the tsconfig file
+  --version=<value>              Version to use in readme links. Defaults to the version in package.json.
+
+DESCRIPTION
+  Adds commands to README.md in current directory.
+
+  The readme must have any of the following tags inside of it for it to be replaced or else it will do nothing:
+  # Usage
+  <!-- usage -->
+  # Commands
+  <!-- commands -->
+  # Table of contents
+  <!-- toc -->
+
+  Customize the code URL prefix by setting oclif.repositoryPrefix in package.json.
+```
+
+_See code: [src/commands/readme.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/readme.ts)_
diff --git a/docs/upload.md b/docs/upload.md
new file mode 100644
index 000000000..ffb4d73d6
--- /dev/null
+++ b/docs/upload.md
@@ -0,0 +1,84 @@
+# `oclif upload`
+
+Upload installable CLI artifacts to AWS S3.
+
+- [`oclif upload deb`](#oclif-upload-deb)
+- [`oclif upload macos`](#oclif-upload-macos)
+- [`oclif upload tarballs`](#oclif-upload-tarballs)
+- [`oclif upload win`](#oclif-upload-win)
+
+## `oclif upload deb`
+
+Upload deb package built with `pack deb`.
+
+```
+USAGE
+  $ oclif upload deb -r <value> [--dry-run]
+
+FLAGS
+  -r, --root=<value>  (required) [default: .] Path to oclif CLI root.
+      --dry-run       Run the command without uploading to S3.
+
+DESCRIPTION
+  Upload deb package built with `pack deb`.
+```
+
+_See code: [src/commands/upload/deb.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/upload/deb.ts)_
+
+## `oclif upload macos`
+
+Upload macos installers built with `pack macos`.
+
+```
+USAGE
+  $ oclif upload macos -r <value> [--dry-run] [-t <value>]
+
+FLAGS
+  -r, --root=<value>     (required) [default: .] Path to oclif CLI root.
+  -t, --targets=<value>  Comma-separated targets to upload (e.g.: darwin-x64,darwin-arm64).
+      --dry-run          Run the command without uploading to S3.
+
+DESCRIPTION
+  Upload macos installers built with `pack macos`.
+```
+
+_See code: [src/commands/upload/macos.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/upload/macos.ts)_
+
+## `oclif upload tarballs`
+
+Upload an oclif CLI to S3.
+
+```
+USAGE
+  $ oclif upload tarballs -r <value> [--dry-run] [-t <value>] [--xz]
+
+FLAGS
+  -r, --root=<value>     (required) [default: .] Path to oclif CLI root.
+  -t, --targets=<value>  Comma-separated targets to upload (e.g.: linux-arm,win32-x64).
+      --dry-run          Run the command without uploading to S3.
+      --[no-]xz          Also upload xz.
+
+DESCRIPTION
+  Upload an oclif CLI to S3.
+```
+
+_See code: [src/commands/upload/tarballs.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/upload/tarballs.ts)_
+
+## `oclif upload win`
+
+Upload windows installers built with `pack win`.
+
+```
+USAGE
+  $ oclif upload win -r <value> [--dry-run] [--targets <value>]
+
+FLAGS
+  -r, --root=<value>     (required) [default: .] Path to oclif CLI root.
+      --dry-run          Run the command without uploading to S3.
+      --targets=<value>  Comma-separated targets to pack (e.g.: win32-x64,win32-x86,win32-arm64).
+
+DESCRIPTION
+  Upload windows installers built with `pack win`.
+```
+
+_See code: [src/commands/upload/win.ts](https://github.com/oclif/oclif/blob/4.17.3/src/commands/upload/win.ts)_
diff --git a/git2gus/config.json b/git2gus/config.json
deleted file mode 100644
index c8eda1c48..000000000
--- a/git2gus/config.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "productTag": "a1aB00000004Bx8IAE",
-  "defaultBuild": "offcore.tooling.55"
-}
\ No newline at end of file
diff --git a/package-scripts.js b/package-scripts.js
deleted file mode 100644
index f243f07e9..000000000
--- a/package-scripts.js
+++ /dev/null
@@ -1,66 +0,0 @@
-const script = (script, description) => description ? {script, description} : {script}
-const _ = require('lodash')
-const sh = require('shelljs')
-const path = require('path')
-const {execSync} = require('child_process')
-
-let hasYarn = false
-try {
-  execSync('yarn -v', {stdio: 'ignore'})
-  hasYarn = true
-} catch {}
-
-const pkgManager = hasYarn ? 'yarn' : 'npm run'
-
-sh.set('-e')
-
-const objectValuesToString = o => {
-  if (_.isString(o)) {
-    return o
-  }
-
-  const m = Object.entries(o).map(([, v]) => v)
-  return m.join(' && ')
-}
-
-process.env.TEST_SERIES = '1'
-const testTypes = ['commands']
-const tests = testTypes.map(type => {
-  const {silent} = sh.config
-  sh.config.silent = true
-  const mocha = 'mocha --forbid-only'
-  const base = path.join('test', 'commands')
-  sh.pushd(base)
-  let tests = _(sh.ls())
-  .map(t => [t.split('.')[0], path.join(base, t)])
-  .map(([t, s]) => {
-    const mochaString = process.env.CIRCLECI ? `MOCHA_FILE=reports/mocha-${t}.xml ${mocha} --reporter mocha-junit-reporter ${s}` : `${mocha} ${s}`
-    const concurrentlyString = `node node_modules/concurrently/dist/bin/concurrently.js --kill-others-on-fail --prefix-colors "dim" --prefix "[{name}]" --names "${type}"`
-    return [t, `${concurrentlyString} "${mochaString}"`]
-  })
-
-  sh.popd()
-  tests = process.env.TEST_SERIES === '1' ?
-    tests.map(t => t[1]).join(' && ') :
-    tests.fromPairs().value()
-  if (process.env.CIRCLECI) {
-    tests = `${pkgManager} mkdirp reports && ${objectValuesToString(tests)}`
-  }
-
-  sh.config.silent = silent
-  return [type, `${pkgManager} build && ${objectValuesToString(tests)}`]
-})
-
-module.exports = {
-  scripts: {
-    build: 'shx rm -rf lib && tsc',
-    lint: {
-      default: 'node node_modules/concurrently/dist/bin/concurrently.js --kill-others-on-fail --prefix-colors "dim" --prefix "[{name}]" --names "lint.tsc" \'nps lint.tsc\'',
-      // eslint: script('eslint . --ext .ts --config .eslintrc', 'lint js & ts files'),
-      tsc: script('tsc --noEmit', 'syntax check with tsc'),
-    },
-    test: Object.assign({
-      default: testTypes.map(t => `nps test.${t}`).join(' && '),
-    }, Object.fromEntries(tests)),
-  },
-}
diff --git a/package.json b/package.json
index 7b7e1f584..e285bcd88 100644
--- a/package.json
+++ b/package.json
@@ -1,79 +1,79 @@
 {
   "name": "oclif",
   "description": "oclif: create your own CLI",
-  "version": "3.8.1",
+  "version": "4.17.3",
   "author": "Salesforce",
   "bin": {
-    "oclif": "bin/run",
-    "oclif2": "bin/run"
+    "oclif": "bin/run.js"
   },
   "bugs": "https://github.com/oclif/oclif/issues",
   "dependencies": {
-    "@oclif/core": "^2.8.0",
-    "@oclif/plugin-help": "^5.1.19",
-    "@oclif/plugin-not-found": "^2.3.7",
-    "@oclif/plugin-warn-if-update-available": "^2.0.14",
-    "aws-sdk": "^2.1231.0",
-    "concurrently": "^7.6.0",
-    "debug": "^4.3.3",
+    "@aws-sdk/client-cloudfront": "^3.699.0",
+    "@aws-sdk/client-s3": "^3.712.0",
+    "@inquirer/confirm": "^3.1.22",
+    "@inquirer/input": "^2.2.4",
+    "@inquirer/select": "^2.5.0",
+    "@oclif/core": "^4.2.0",
+    "@oclif/plugin-help": "^6.2.17",
+    "@oclif/plugin-not-found": "^3.2.31",
+    "@oclif/plugin-warn-if-update-available": "^3.1.28",
+    "async-retry": "^1.3.3",
+    "chalk": "^4",
+    "change-case": "^4",
+    "debug": "^4.4.0",
+    "ejs": "^3.1.10",
     "find-yarn-workspace-root": "^2.0.0",
     "fs-extra": "^8.1",
-    "github-slugger": "^1.5.0",
-    "got": "^11",
+    "github-slugger": "^2",
+    "got": "^13",
     "lodash": "^4.17.21",
-    "normalize-package-data": "^3.0.3",
-    "semver": "^7.3.8",
-    "shelljs": "^0.8.5",
-    "tslib": "^2.3.1",
-    "yeoman-environment": "^3.11.1",
-    "yeoman-generator": "^5.6.1",
-    "yosay": "^2.0.2"
+    "normalize-package-data": "^6",
+    "semver": "^7.6.3",
+    "sort-package-json": "^2.10.1",
+    "tiny-jsonc": "^1.0.1",
+    "validate-npm-package-name": "^5.0.1"
   },
   "devDependencies": {
-    "@oclif/plugin-legacy": "^1.2.7",
-    "@oclif/test": "^2.3.0",
-    "@types/chai": "^4.3.4",
-    "@types/cli-progress": "^3.11.0",
-    "@types/execa": "^0.9.0",
+    "@commitlint/config-conventional": "^19",
+    "@oclif/plugin-legacy": "^2.0.19",
+    "@oclif/prettier-config": "^0.2.1",
+    "@oclif/test": "^4",
+    "@types/async-retry": "^1.4.5",
+    "@types/chai": "^4.3.17",
+    "@types/cli-progress": "^3.11.6",
+    "@types/debug": "^4.1.12",
+    "@types/ejs": "^3.1.5",
     "@types/fs-extra": "^9.0",
-    "@types/lodash": "^4.14.191",
-    "@types/lodash.template": "^4.5.0",
-    "@types/mocha": "^8.2.3",
-    "@types/node": "^14.18.34",
-    "@types/read-pkg": "^5.1.0",
-    "@types/semver": "^7.3.13",
+    "@types/lodash": "^4.17.13",
+    "@types/mocha": "^10.0.10",
+    "@types/node": "^18",
+    "@types/semver": "^7.5.8",
     "@types/shelljs": "^0.8.11",
-    "@types/supports-color": "^7.2.1",
-    "@types/write-json-file": "^3.2.1",
-    "@types/yeoman-generator": "^5.2.10",
-    "@types/yosay": "^2.0.1",
-    "chai": "^4.3.7",
-    "conventional-changelog-cli": "^2.2.2",
-    "eslint": "^7.32.0",
-    "eslint-config-oclif": "^4.0.0",
-    "eslint-config-oclif-typescript": "^1.0.2",
-    "execa": "^0.11.0",
-    "fancy-test": "^1.4.10",
-    "globby": "^11.1.0",
-    "mocha": "^9.2.2",
-    "npm-run-path": "^4.0.1",
-    "nps": "^5.10.0",
+    "@types/sinon": "^17.0.3",
+    "@types/validate-npm-package-name": "^4.0.2",
+    "chai": "^4.5.0",
+    "commitlint": "^19",
+    "eslint": "^8.57.1",
+    "eslint-config-oclif": "^5.2.2",
+    "eslint-config-oclif-typescript": "^3.1.12",
+    "eslint-config-prettier": "^9.0.0",
+    "eslint-plugin-perfectionist": "^2.11.0",
+    "husky": "^9.1.7",
+    "lint-staged": "^15",
+    "mocha": "^10.8.2",
+    "nyc": "^15.1.0",
+    "prettier": "^3.4.2",
+    "shelljs": "^0.8.5",
     "shx": "^0.3.4",
-    "tmp": "^0.2.1",
+    "sinon": "^18.0.1",
     "ts-node": "^10.7.0",
-    "typescript": "4.5.5"
-  },
-  "resolutions": {
-    "colors": "1.4.0"
-  },
-  "overrides": {
-    "colors": "1.4.0"
+    "typescript": "^5"
   },
   "engines": {
-    "node": ">=12.0.0"
+    "node": ">=18.0.0"
   },
   "files": [
-    ".oclif.manifest.json",
+    "oclif.manifest.json",
     "/bin",
     "/lib",
     "/templates"
@@ -92,9 +92,6 @@
       "@oclif/plugin-not-found"
     ],
     "bin": "oclif",
-    "binAliases": [
-      "oclif2"
-    ],
     "dirname": "oclif",
     "topicSeparator": " ",
     "macos": {
@@ -106,7 +103,7 @@
         "debounce": 60
       },
       "node": {
-        "version": "16.13.2"
+        "version": "18.17.1"
       },
       "s3": {
         "bucket": "dfc-data-production",
@@ -119,30 +116,37 @@
     },
     "topics": {
       "pack": {
-        "description": "package an oclif CLI into installable artifacts"
+        "description": "Package an oclif CLI into installable artifacts."
       },
       "upload": {
-        "description": "upload installable CLI artifacts to AWS S3"
+        "description": "Upload installable CLI artifacts to AWS S3."
       }
     }
   },
   "repository": "oclif/oclif",
   "scripts": {
     "build": "shx rm -rf lib && tsc",
-    "devcli:lint": "eslint . --ext .ts --config .eslintrc",
-    "devcli:test": "mocha --forbid-only \"test/unit/*.test.ts\"",
-    "devcli": "yarn build --noEmit && yarn run devcli:test && yarn run devcli:lint",
-    "lint": "nps lint",
-    "postpack": "shx rm .oclif.manifest.json",
+    "commitlint": "commitlint",
+    "compile": "tsc",
+    "format": "prettier --write \"+(src|test)/**/*.+(ts|js|json)\"",
+    "lint": "eslint . --ext .ts",
+    "postpack": "shx rm oclif.manifest.json",
     "posttest": "yarn run lint",
-    "prepack": "shx rm -rf lib && tsc && bin/dev manifest .",
-    "test": "nps test && yarn test:unit && yarn test:integration",
-    "test:integration": "mocha --forbid-only \"test/integration/*.test.ts\"",
-    "test:unit": "mocha --forbid-only \"test/unit/*.test.ts\"",
-    "version": "bin/dev readme && git add README.md"
+    "prepack": "yarn build && bin/run.js manifest",
+    "prepare": "husky",
+    "test:integration:cli": "mocha test/integration/cli.test.ts --timeout 600000",
+    "test:integration:deb": "mocha test/integration/deb.test.ts --timeout 900000",
+    "test:integration:init": "mocha test/integration/init.test.ts --timeout 600000",
+    "test:integration:macos": "mocha test/integration/macos.test.ts --timeout 900000",
+    "test:integration:publish": "mocha test/integration/publish.test.ts --timeout 900000",
+    "test:integration:sf": "mocha test/integration/sf.test.ts --timeout 600000",
+    "test:integration:win": "mocha test/integration/win.test.ts --timeout 900000",
+    "test:integration": "mocha --forbid-only \"test/integration/*.test.ts\" --timeout 900000",
+    "test": "nyc mocha --forbid-only \"test/unit/*.test.ts\"",
+    "oclif": "bin/run.js"
   },
   "publishConfig": {
     "registry": "https://registry.npmjs.org"
   },
   "types": "lib/index.d.ts"
-}
\ No newline at end of file
+}
diff --git a/release.config.js b/release.config.js
deleted file mode 100644
index ac8e25f8a..000000000
--- a/release.config.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/* eslint-disable no-template-curly-in-string */
-
-module.exports = {
-  verifyConditions: [
-    {
-      path: '@semantic-release/exec',
-      cmd: './node_modules/.bin/nps build',
-    },
-    '@semantic-release/changelog',
-    '@semantic-release/npm',
-    '@semantic-release/git',
-    '@semantic-release/github',
-  ],
-  prepare: [
-    {
-      path: '@semantic-release/exec',
-      cmd: 'OCLIF_NEXT_VERSION=${nextRelease.version} yarn run version',
-    },
-    '@semantic-release/changelog',
-    '@semantic-release/npm',
-    {
-      path: '@semantic-release/git',
-      assets: ['package.json', 'CHANGELOG.md', 'README.md', 'docs'],
-    },
-  ],
-  publish: [
-    '@semantic-release/npm',
-    '@semantic-release/github',
-  ],
-}
diff --git a/src/aws.ts b/src/aws.ts
index f3926b5f6..bd4b986f4 100644
--- a/src/aws.ts
+++ b/src/aws.ts
@@ -1,24 +1,46 @@
-import * as CloudFront from 'aws-sdk/clients/cloudfront'
-import * as S3 from 'aws-sdk/clients/s3'
-import * as fs from 'fs-extra'
+import {
+  CloudFrontClient,
+  CreateInvalidationCommand,
+  CreateInvalidationCommandOutput,
+  CreateInvalidationRequest,
+} from '@aws-sdk/client-cloudfront'
+import {
+  CopyObjectCommand,
+  CopyObjectOutput,
+  CopyObjectRequest,
+  DeleteObjectsCommand,
+  DeleteObjectsOutput,
+  DeleteObjectsRequest,
+  GetObjectCommand,
+  GetObjectOutput,
+  GetObjectRequest,
+  HeadObjectCommand,
+  HeadObjectOutput,
+  HeadObjectRequest,
+  ListObjectsV2Command,
+  ListObjectsV2Output,
+  ListObjectsV2Request,
+  PutObjectCommand,
+  PutObjectOutput,
+  PutObjectRequest,
+  S3Client,
+} from '@aws-sdk/client-s3'
+import {CLIError} from '@oclif/core/errors'
+import {ux} from '@oclif/core/ux'
+import {createReadStream} from 'fs-extra'
 
 import {debug as Debug, log} from './log'
 import {prettifyPaths} from './util'
 
 const debug = Debug.new('aws')
 
-export namespace upload {
-  export interface Options {
-    localFile: string;
-    s3Params: {
-      Bucket: string;
-      Key: string;
-    };
-  }
-}
-
-const cache: {s3?: S3; cloudfront?: CloudFront} = {}
+const cache: {cloudfront?: CloudFrontClient; s3?: S3Client} = {}
 const aws = {
+  get cloudfront() {
+    cache.cloudfront =
+      cache.cloudfront || new (require('@aws-sdk/client-cloudfront').CloudFrontClient)({credentials: this.creds})
+    return cache.cloudfront
+  },
   get creds() {
     const creds = {
       accessKeyId: process.env.AWS_ACCESS_KEY_ID,
@@ -31,97 +53,132 @@ const aws = {
   },
   get s3() {
     try {
-      cache.s3 = cache.s3 || new (require('aws-sdk/clients/s3') as typeof S3)({
-        ...this.creds,
-        endpoint: process.env.AWS_S3_ENDPOINT,
-        s3ForcePathStyle: Boolean(process.env.AWS_S3_FORCE_PATH_STYLE),
-      })
+      cache.s3 =
+        cache.s3 ??
+        new (require('@aws-sdk/client-s3').S3Client)({
+          credentials: this.creds,
+          endpoint: process.env.AWS_S3_ENDPOINT,
+          forcePathStyle: Boolean(process.env.AWS_S3_FORCE_PATH_STYLE),
+          region: process.env.AWS_REGION ?? 'us-east-1',
+        })
       return cache.s3
-    } catch (error: any) {
-      if (error.code === 'MODULE_NOT_FOUND') throw new Error(`${error.message}\naws-sdk is needed to run this command.\nInstall aws-sdk as a devDependency in your CLI. \`yarn add -D aws-sdk\``)
+    } catch (error: unknown) {
+      const {code, message} = error as {code: string; message: string}
+      if (code === 'MODULE_NOT_FOUND')
+        throw new Error(
+          `${message}\n@aws-sdk/client-s3 is needed to run this command.\nInstall @aws-sdk/client-s3 as a devDependency in your CLI. \`yarn add -D @aws-sdk/client-s3\``,
+        )
       throw error
     }
   },
-  get cloudfront() {
-    cache.cloudfront = cache.cloudfront || new (require('aws-sdk/clients/cloudfront') as typeof CloudFront)(this.creds)
-    return cache.cloudfront
-  },
 }
 
 export default {
-  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
   get cloudfront() {
     return {
-      createCloudfrontInvalidation: (options: CloudFront.Types.CreateInvalidationRequest) => new Promise((resolve, reject) => {
-        log('createCloudfrontInvalidation', options.DistributionId, options.InvalidationBatch.Paths.Items)
-        aws.cloudfront.createInvalidation(options, err => {
-          if (err) reject(err)
-          else resolve(null)
-        })
-      }),
+      createCloudfrontInvalidation: (options: CreateInvalidationRequest) =>
+        new Promise<CreateInvalidationCommandOutput>((resolve, reject) => {
+          log('createCloudfrontInvalidation', options.DistributionId, options.InvalidationBatch?.Paths?.Items)
+          aws.cloudfront
+            ?.send(new CreateInvalidationCommand(options))
+            .then((data) => resolve(data))
+            .catch((error) => reject(error))
+        }),
     }
   },
-  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+
   get s3() {
     return {
-      uploadFile: (local: string, options: S3.Types.PutObjectRequest) => new Promise((resolve, reject) => {
-        log('s3:uploadFile', prettifyPaths(local), `s3://${options.Bucket}/${options.Key}`)
-        options.Body = fs.createReadStream(local)
-        aws.s3.upload(options, err => {
-          if (err) reject(err)
-          else resolve(null)
-        })
-      }),
-      headObject: (options: S3.Types.HeadObjectRequest) => new Promise<S3.HeadObjectOutput>((resolve, reject) => {
-        debug('s3:headObject', `s3://${options.Bucket}/${options.Key}`)
-        aws.s3.headObject(options, (err, data) => {
-          if (err) reject(err)
-          else resolve(data)
-        })
-      }),
-      copyObject: (options: S3.Types.CopyObjectRequest) => new Promise((resolve, reject) => {
-        log('s3:copyObject', `from s3://${options.CopySource}`, `to s3://${options.Bucket}/${options.Key}`)
-        aws.s3.copyObject(options, function (err, data) {
-          if (err) reject(err)
-          else resolve(data)
-        })
-      }),
-      getObject: (options: S3.Types.GetObjectRequest) => new Promise<S3.GetObjectOutput>((resolve, reject) => {
-        debug('getObject', `s3://${options.Bucket}/${options.Key}`)
-        aws.s3.getObject(options, function (err, data) {
-          if (err) reject(err)
-          else resolve(data)
-        })
-      }),
-      listObjects: (options: S3.Types.ListObjectsV2Request) => new Promise<S3.ListObjectsV2Output>((resolve, reject) => {
-        debug('listObjects', `s3://${options.Bucket}/${options.Prefix}`)
-        aws.s3.listObjectsV2(options, (err, objects) => {
-          if (err) reject(err)
-          resolve(objects)
-        })
-      }),
-      deleteObjects: (options: S3.Types.DeleteObjectsRequest) => new Promise<S3.DeleteObjectsOutput>((resolve, reject) => {
-        debug('deleteObjects', `s3://${options.Bucket}`)
-        aws.s3.deleteObjects(options, (err, deletedObjects) => {
-          if (err) reject(err)
-          resolve(deletedObjects)
-        })
-      }),
+      copyObject: (
+        options: CopyObjectRequest,
+        {dryRun, ignoreMissing, namespace}: {dryRun?: boolean; ignoreMissing?: boolean; namespace?: string},
+      ) =>
+        new Promise<CopyObjectOutput>((resolve, reject) => {
+          const logNamespace = namespace ? `> ${namespace}` : `> s3://${options.CopySource}`
+          ux.stdout(logNamespace)
+          ux.stdout('  action: copy')
+          ux.stdout(`  source: s3://${options.CopySource}`)
+          ux.stdout(`  target: s3://${options.Bucket}/${options.Key}`)
+          ux.stdout()
+          if (dryRun) return
+          aws.s3
+            ?.send(new CopyObjectCommand(options))
+            .then((data) => resolve(data))
+            .catch((error) => {
+              if (error.Code === 'NoSuchKey') {
+                if (ignoreMissing) {
+                  ux.stdout(logNamespace)
+                  ux.stdout(
+                    `  warning: s3://${options.CopySource} does not exist - skipping because of --ignore-missing`,
+                  )
+                  return
+                }
+
+                ux.stdout(logNamespace)
+                ux.stdout(`  error: s3://${options.CopySource} does not exist`)
+                reject(
+                  new CLIError(
+                    `Failed to copy source object s3://${options.CopySource} to s3://${options.Bucket}/${options.Key} because the source object does not exist`,
+                    {
+                      suggestions: [
+                        'Use the "oclif upload" to upload the object first',
+                        'Use the "--targets" flag to specify existing targets',
+                        'Use the "--ignore-missing" flag to skip this error',
+                      ],
+                    },
+                  ),
+                )
+              }
+
+              reject(error)
+            })
+        }),
+      deleteObjects: (options: DeleteObjectsRequest) =>
+        new Promise<DeleteObjectsOutput>((resolve, reject) => {
+          debug('deleteObjects', `s3://${options.Bucket}`)
+          aws.s3
+            ?.send(new DeleteObjectsCommand(options))
+            .then((data) => resolve(data))
+            .catch((error) => reject(error))
+        }),
+      getObject: (options: GetObjectRequest) =>
+        new Promise<GetObjectOutput>((resolve, reject) => {
+          debug('getObject', `s3://${options.Bucket}/${options.Key}`)
+          aws.s3
+            ?.send(new GetObjectCommand(options))
+            .then((data) => resolve(data))
+            .catch((error) => reject(error))
+        }),
+      headObject: (options: HeadObjectRequest) =>
+        new Promise<HeadObjectOutput>((resolve, reject) => {
+          debug('s3:headObject', `s3://${options.Bucket}/${options.Key}`)
+          aws.s3
+            ?.send(new HeadObjectCommand(options))
+            .then((data) => resolve(data))
+            .catch((error) => reject(error))
+        }),
+      listObjects: (options: ListObjectsV2Request) =>
+        new Promise<ListObjectsV2Output>((resolve, reject) => {
+          debug('listObjects', `s3://${options.Bucket}/${options.Prefix}`)
+          aws.s3
+            ?.send(new ListObjectsV2Command(options))
+            .then((data) => resolve(data))
+            .catch((error) => reject(error))
+        }),
+      uploadFile: (local: string, options: PutObjectRequest, {dryRun}: {dryRun?: boolean} = {}) =>
+        new Promise<PutObjectOutput>((resolve, reject) => {
+          ux.stdout(`> ${local}`)
+          ux.stdout('  action: upload')
+          ux.stdout(`  source: ${prettifyPaths(local)}`)
+          ux.stdout(`  target: s3://${options.Bucket}/${options.Key}`)
+          ux.stdout()
+          if (dryRun) return
+          options.Body = createReadStream(local)
+          aws.s3
+            ?.send(new PutObjectCommand(options))
+            .then((data) => resolve(data))
+            .catch((error) => reject(error))
+        }),
     }
   },
 }
-// export const getObject = (options: S3.Types.GetObjectRequest) => new Promise<S3.GetObjectOutput>((resolve, reject) => {
-//   debug('getObject', `s3://${options.Bucket}/${options.Key}`)
-//   aws.s3().getObject(options, (err, data) => {
-//     if (err) reject(err)
-//     else resolve(data)
-//   })
-// })
-
-// export const listObjects = (options: S3.Types.ListObjectsV2Request) => new Promise<S3.ListObjectsV2Output>((resolve, reject) => {
-//   debug('listObjects', `s3://${options.Bucket}/${options.Prefix}`)
-//   s3().listObjectsV2(options, (err, objects) => {
-//     if (err) reject(err)
-//     else resolve(objects)
-//   })
-// })
diff --git a/src/command-base.ts b/src/command-base.ts
deleted file mode 100644
index fb7ed7ae4..000000000
--- a/src/command-base.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import {Command} from '@oclif/core'
-import {createEnv} from 'yeoman-environment'
-
-export default abstract class CommandBase extends Command {
-  protected async generate(type: string, generatorOptions: Record<string, unknown> = {}): Promise<void> {
-    const env = createEnv()
-
-    env.register(
-      require.resolve(`./generators/${type}`),
-      `oclif:${type}`,
-    )
-
-    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
-    // @ts-ignore
-    await env.run(`oclif:${type}`, generatorOptions)
-  }
-}
diff --git a/src/commands/generate.ts b/src/commands/generate.ts
index 858b00102..534b89ec7 100644
--- a/src/commands/generate.ts
+++ b/src/commands/generate.ts
@@ -1,22 +1,290 @@
-import {Args} from '@oclif/core'
-import CommandBase from './../command-base'
+import {Args, Errors, Flags} from '@oclif/core'
+import chalk from 'chalk'
+import {existsSync} from 'node:fs'
+import {readdir} from 'node:fs/promises'
+import {join, resolve, sep} from 'node:path'
+import validatePkgName from 'validate-npm-package-name'
 
-export default class Generate extends CommandBase {
-  static description = `generate a new CLI
-This will clone the template repo 'oclif/hello-world' and update package properties`
+import {FlaggablePrompt, GeneratorCommand, exec, makeFlags} from '../generator'
+import {debug as Debug} from '../log'
+import {validateBin} from '../util'
 
-  static flags = {}
+const debug = Debug.new('generate')
 
+async function fetchGithubUserFromAPI(): Promise<{login: string; name: string} | undefined> {
+  const token = process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN
+  if (!token) return
+
+  const {default: got} = await import('got')
+  const headers = {
+    Accept: 'application/vnd.github.v3+json',
+    Authorization: `Bearer ${token}`,
+  }
+
+  try {
+    const {login, name} = await got('https://api.github.com/user', {headers}).json<{login: string; name: string}>()
+    return {login, name}
+  } catch {}
+}
+
+async function fetchGithubUserFromGit(): Promise<string | undefined> {
+  try {
+    const result = await exec('git config --get user.name')
+    return result.stdout.trim()
+  } catch {}
+}
+
+async function fetchGithubUser(): Promise<{login?: string; name: string | undefined} | undefined> {
+  return (await fetchGithubUserFromAPI()) ?? {name: await fetchGithubUserFromGit()}
+}
+
+function determineDefaultAuthor(
+  user: {login?: string; name: string | undefined} | undefined,
+  defaultValue: string,
+): string {
+  const {login, name} = user ?? {login: undefined, name: undefined}
+  if (name && login) return `${name} @${login}`
+  if (name) return name
+  if (login) return `@${login}`
+  return defaultValue
+}
+
+const FLAGGABLE_PROMPTS = {
+  author: {
+    message: 'Author',
+    validate: (d) => d.length > 0 || 'Author cannot be empty',
+  },
+  bin: {
+    message: 'Command bin name the CLI will export',
+    validate: (d) => validateBin(d) || 'Invalid bin name',
+  },
+  description: {
+    message: 'Description',
+    validate: (d) => d.length > 0 || 'Description cannot be empty',
+  },
+  license: {
+    message: 'License',
+    validate: (d) => d.length > 0 || 'License cannot be empty',
+  },
+  'module-type': {
+    message: 'Select a module type',
+    options: ['CommonJS', 'ESM'],
+    validate: (d) => ['CommonJS', 'ESM'].includes(d) || 'Invalid module type',
+  },
+  name: {
+    message: 'NPM package name',
+    validate: (d) => validatePkgName(d).validForNewPackages || 'Invalid package name',
+  },
+  owner: {
+    message: 'Who is the GitHub owner of repository (https://github.com/OWNER/repo)',
+    validate: (d) => d.length > 0 || 'Owner cannot be empty',
+  },
+  'package-manager': {
+    message: 'Select a package manager',
+    options: ['npm', 'yarn', 'pnpm'],
+    validate: (d) => ['npm', 'pnpm', 'yarn'].includes(d) || 'Invalid package manager',
+  },
+  repository: {
+    message: 'What is the GitHub name of repository (https://github.com/owner/REPO)',
+    validate: (d) => d.length > 0 || 'Repo cannot be empty',
+  },
+} satisfies Record<string, FlaggablePrompt>
+
+export default class Generate extends GeneratorCommand<typeof Generate> {
   static args = {
-    name: Args.string({required: true, description: 'directory name of new project'}),
+    name: Args.string({description: 'Directory name of new project.', required: true}),
   }
 
+  static description = `This will generate a fully functional oclif CLI that you can build on. It will prompt you for all the necessary information to get started. If you want to skip the prompts, you can pass the --yes flag to accept the defaults for all prompts. You can also pass individual flags to set specific values for prompts.
+
+Head to oclif.io/docs/introduction to learn more about building CLIs with oclif.`
+
+  static examples = [
+    {
+      command: '<%= config.bin %> <%= command.id %> my-cli',
+      description: 'Generate a new CLI with prompts for all properties',
+    },
+    {
+      command: '<%= config.bin %> <%= command.id %> my-cli --yes',
+      description: 'Automatically accept default values for all prompts',
+    },
+    {
+      command: '<%= config.bin %> <%= command.id %> my-cli --module-type CommonJS --author "John Doe"',
+      description: 'Supply answers for specific prompts',
+    },
+    {
+      command: '<%= config.bin %> <%= command.id %> my-cli --module-type CommonJS --author "John Doe" --yes',
+      description: 'Supply answers for specific prompts and accept default values for the rest',
+    },
+  ]
+
+  static flaggablePrompts = FLAGGABLE_PROMPTS
+
+  static flags = {
+    ...makeFlags(FLAGGABLE_PROMPTS),
+    'dry-run': Flags.boolean({
+      char: 'n',
+      description: 'Print the files that would be created without actually creating them.',
+    }),
+    'output-dir': Flags.directory({
+      char: 'd',
+      description: 'Directory to build the CLI in.',
+    }),
+    yes: Flags.boolean({
+      aliases: ['defaults'],
+      char: 'y',
+      description: 'Use defaults for all prompts. Individual flags will override defaults.',
+    }),
+  }
+
+  static summary = 'Generate a new CLI'
+
   async run(): Promise<void> {
-    const {args} = await this.parse(Generate)
+    const location = this.flags['output-dir'] ? join(this.flags['output-dir'], this.args.name) : resolve(this.args.name)
+    this.log(`Generating ${this.args.name} in ${chalk.green(location)}`)
+
+    if (existsSync(location)) {
+      throw new Errors.CLIError(`The directory ${location} already exists.`)
+    }
+
+    const moduleType = await this.getFlagOrPrompt({
+      defaultValue: 'ESM',
+      name: 'module-type',
+      type: 'select',
+    })
+
+    const githubUser = await fetchGithubUser()
 
-    await super.generate('cli', {
-      name: args.name,
-      force: true,
+    const name = await this.getFlagOrPrompt({defaultValue: this.args.name, name: 'name', type: 'input'})
+    const bin = await this.getFlagOrPrompt({defaultValue: name, name: 'bin', type: 'input'})
+    const description = await this.getFlagOrPrompt({
+      defaultValue: 'A new CLI generated with oclif',
+      name: 'description',
+      type: 'input',
+    })
+    const author = await this.getFlagOrPrompt({
+      defaultValue: determineDefaultAuthor(githubUser, 'Your Name Here'),
+      name: 'author',
+      type: 'input',
     })
+
+    const license = await this.getFlagOrPrompt({
+      defaultValue: 'MIT',
+      name: 'license',
+      type: 'input',
+    })
+
+    const owner = await this.getFlagOrPrompt({
+      defaultValue: githubUser?.login ?? location.split(sep).at(-2) ?? 'Your Name Here',
+      name: 'owner',
+      type: 'input',
+    })
+
+    const repository = await this.getFlagOrPrompt({
+      defaultValue: name.split('/').at(-1) ?? name,
+      name: 'repository',
+      type: 'input',
+    })
+
+    const packageManager = await this.getFlagOrPrompt({
+      defaultValue: 'npm',
+      name: 'package-manager',
+      type: 'select',
+    })
+
+    const [sharedFiles, moduleSpecificFiles] = await Promise.all(
+      ['shared', moduleType.toLowerCase()].map((f) => join(this.templatesDir, 'cli', f)).map(findEjsFiles(location)),
+    )
+
+    debug('shared files %O', sharedFiles)
+    debug(`${moduleType} files %O`, moduleSpecificFiles)
+
+    await Promise.all(
+      [...sharedFiles, ...moduleSpecificFiles].map(async (file) => {
+        switch (file.name) {
+          case 'package.json.ejs': {
+            const data = {
+              author,
+              bin,
+              description,
+              license,
+              moduleType,
+              name,
+              owner,
+              pkgManagerScript: packageManager === 'yarn' ? 'yarn' : `${packageManager} run`,
+              repository,
+            }
+            await this.template(file.src, file.destination, data)
+
+            break
+          }
+
+          case '.gitignore.ejs': {
+            await this.template(file.src, file.destination, {packageManager})
+
+            break
+          }
+
+          case 'README.md.ejs': {
+            await this.template(file.src, file.destination, {description, name, repository})
+
+            break
+          }
+
+          case 'onPushToMain.yml.ejs':
+          case 'onRelease.yml.ejs':
+          case 'test.yml.ejs': {
+            await this.template(file.src, file.destination, {
+              exec: packageManager === 'yarn' ? packageManager : `${packageManager} exec`,
+              install: packageManager === 'yarn' ? packageManager : `${packageManager} install`,
+              packageManager,
+              run: packageManager === 'yarn' ? packageManager : `${packageManager} run`,
+            })
+
+            break
+          }
+
+          default: {
+            await this.template(file.src, file.destination)
+          }
+        }
+      }),
+    )
+
+    if (this.flags['dry-run']) {
+      this.log(`\n[DRY RUN] Created ${chalk.green(name)}`)
+    } else {
+      if (process.platform !== 'win32') {
+        await Promise.all([
+          exec(`chmod +x ${join(location, 'bin', 'run.js')}`),
+          exec(`chmod +x ${join(location, 'bin', 'dev.js')}`),
+        ])
+      }
+
+      await exec(`${packageManager} install`, {cwd: location, silent: false})
+      await exec(`${packageManager} run build`, {cwd: location, silent: false})
+      await exec(`${join(location, 'node_modules', '.bin', 'oclif')} readme`, {
+        cwd: location,
+        // When testing this command in development, you get noisy compilation errors as a result of running
+        // this in a spawned process. Setting the NODE_ENV to production will silence these warnings. This
+        // doesn't affect the behavior of the command in production since the NODE_ENV is already set to production
+        // in that scenario.
+        env: {...process.env, NODE_ENV: 'production'},
+        silent: false,
+      })
+
+      this.log(`\nCreated ${chalk.green(name)}`)
+    }
   }
 }
+
+const findEjsFiles =
+  (location: string) =>
+  async (dir: string): Promise<Array<{destination: string; name: string; src: string}>> =>
+    (await readdir(dir, {recursive: true, withFileTypes: true}))
+      .filter((f) => f.isFile() && f.name.endsWith('.ejs'))
+      .map((f) => ({
+        destination: join(f.path.replace(dir, location), f.name.replace('.ejs', '')),
+        name: f.name,
+        src: join(f.path, f.name),
+      }))
diff --git a/src/commands/generate/command.ts b/src/commands/generate/command.ts
index f0ab6222f..452ae52c3 100644
--- a/src/commands/generate/command.ts
+++ b/src/commands/generate/command.ts
@@ -1,23 +1,48 @@
-import CommandBase from './../../command-base'
-import {Args, Flags} from '@oclif/core'
+import {Args, Errors, Flags} from '@oclif/core'
+import chalk from 'chalk'
+import {pascalCase} from 'change-case'
+import {join} from 'node:path'
 
-export default class GenerateCommand extends CommandBase {
-  static description = 'add a command to an existing CLI or plugin'
-
-  static flags = {
-    force: Flags.boolean({description: 'overwrite existing files'}),
-  }
+import {GeneratorCommand, readPJSON} from '../../generator'
 
+export default class GenerateCommand extends GeneratorCommand<typeof GenerateCommand> {
   static args = {
     name: Args.string({description: 'name of command', required: true}),
   }
 
+  static description = 'Add a command to an existing CLI or plugin.'
+
+  static flags = {
+    'commands-dir': Flags.string({default: 'src/commands', description: 'The directory to create the command in.'}),
+    force: Flags.boolean({description: 'Overwrite existing files.'}),
+  }
+
   async run(): Promise<void> {
-    const {args, flags} = await this.parse(GenerateCommand)
+    const packageJSON = await readPJSON(process.cwd())
+    if (!packageJSON) throw new Errors.CLIError('not in a project directory')
+    const topicSeparator = packageJSON.oclif?.topicSeparator ?? ':'
+    this.log(`Adding ${chalk.dim(this.args.name.replaceAll(':', topicSeparator))} to ${packageJSON.name}!`)
+
+    const cmdPath = this.args.name.split(':').join('/')
+    const destination = join(process.cwd(), this.flags['commands-dir'], `${cmdPath}.ts`)
+
+    let bin = packageJSON.oclif?.bin ?? packageJSON.oclif?.dirname ?? packageJSON.name
+    if (bin.includes('/')) bin = bin.split('/').at(-1)!
+    const opts = {
+      bin,
+      className: pascalCase(this.args.name),
+      cmd: `${bin} ${this.args.name}`,
+      name: this.args.name,
+      path: destination,
+      type: 'command',
+    }
+
+    await this.template(join(this.templatesDir, 'src', 'command.ts.ejs'), destination, opts)
 
-    await super.generate('command', {
-      name: args.name,
-      force: flags.force,
-    })
+    if (packageJSON.devDependencies?.mocha) {
+      const testTemplatePath = join(this.templatesDir, 'test', 'command.test.ts.ejs')
+      const testDestination = join(process.cwd(), 'test', 'commands', `${cmdPath}.test.ts`)
+      await this.template(testTemplatePath, testDestination, opts)
+    }
   }
 }
diff --git a/src/commands/generate/hook.ts b/src/commands/generate/hook.ts
index 57f9ddace..f6f49f10c 100644
--- a/src/commands/generate/hook.ts
+++ b/src/commands/generate/hook.ts
@@ -1,25 +1,61 @@
-import CommandBase from './../../command-base'
-import {Args, Flags} from '@oclif/core'
+import {Args, Errors, Flags} from '@oclif/core'
+import chalk from 'chalk'
+import * as fs from 'fs-extra'
+import {writeFile} from 'node:fs/promises'
+import {join, resolve} from 'node:path'
 
-export default class GenerateHook extends CommandBase {
-  static description = 'add a hook to an existing CLI or plugin'
+import {GeneratorCommand, readPJSON} from '../../generator'
+import {castArray, uniq} from '../../util'
 
-  static flags = {
-    force: Flags.boolean({description: 'overwrite existing files'}),
-    event: Flags.string({description: 'event to run hook on', default: 'init'}),
+export default class GenerateHook extends GeneratorCommand<typeof GenerateHook> {
+  static args = {
+    name: Args.string({description: 'Name of hook (snake_case).', required: true}),
   }
 
-  static args = {
-    name: Args.string({description: 'name of hook (snake_case)', required: true}),
+  static description = 'Add a hook to an existing CLI or plugin.'
+
+  static flags = {
+    event: Flags.string({
+      default: 'init',
+      description: 'Event to run hook on.',
+    }),
+    force: Flags.boolean({
+      description: 'Overwrite existing files.',
+    }),
   }
 
   async run(): Promise<void> {
-    const {args, flags} = await this.parse(GenerateHook)
+    const packageJSON = await readPJSON(process.cwd())
+    if (!packageJSON) throw new Errors.CLIError('not in a project directory')
+
+    this.log(`Adding a ${chalk.dim(this.flags.event)} hook to ${packageJSON.name}!`)
+
+    const source = join(this.templatesDir, 'src', 'hook.ts.ejs')
+    const dest = join(process.cwd(), 'src', 'hooks', this.flags.event, `${this.args.name}.ts`)
+    await this.template(source, dest, {event: this.flags.event})
+
+    if (packageJSON.devDependencies?.mocha) {
+      const testSource = join(this.templatesDir, 'test', 'hook.test.ts.ejs')
+      const testDest = join(process.cwd(), 'test', 'hooks', this.flags.event, `${this.args.name}.test.ts`)
+      await this.template(testSource, testDest)
+    }
+
+    const tsConfigPath = resolve(process.cwd(), 'tsconfig.json')
+    const tsConfig = await fs.readJSON(tsConfigPath).catch(() => ({}))
+    const outDir = tsConfig.compilerOptions?.outDir ?? 'dist'
+    const hooks = packageJSON.oclif?.hooks ?? {}
+    hooks[this.flags.event] = hooks[this.flags.event]
+      ? uniq([...castArray(hooks[this.flags.event]), `./${outDir}/hooks/${this.flags.event}/${this.args.name}`]).sort()
+      : `./${outDir}/hooks/${this.flags.event}/${this.args.name}`
+
+    const updatedPackageJSON = {
+      ...packageJSON,
+      oclif: {
+        ...packageJSON.oclif,
+        hooks,
+      },
+    }
 
-    await super.generate('hook', {
-      name: args.name,
-      event: flags.event,
-      force: flags.force,
-    })
+    await writeFile(resolve(process.cwd(), 'package.json'), JSON.stringify(updatedPackageJSON, null, 2))
   }
 }
diff --git a/src/commands/init.ts b/src/commands/init.ts
new file mode 100644
index 000000000..52f57e582
--- /dev/null
+++ b/src/commands/init.ts
@@ -0,0 +1,197 @@
+import {Errors, Flags} from '@oclif/core'
+import chalk from 'chalk'
+import {readdir, writeFile} from 'node:fs/promises'
+import {join, resolve, sep} from 'node:path'
+
+import {FlaggablePrompt, GeneratorCommand, exec, makeFlags, readPJSON} from '../generator'
+import {validateBin} from '../util'
+
+const VALID_MODULE_TYPES = ['ESM', 'CommonJS'] as const
+type ModuleType = (typeof VALID_MODULE_TYPES)[number]
+
+const VALID_PACKAGE_MANAGERS = ['npm', 'yarn', 'pnpm'] as const
+type PackageManager = (typeof VALID_PACKAGE_MANAGERS)[number]
+
+function isPackageManager(d: string): d is PackageManager {
+  return VALID_PACKAGE_MANAGERS.includes(d as PackageManager)
+}
+
+function isModuleType(d: string): d is ModuleType {
+  return VALID_MODULE_TYPES.includes(d as ModuleType)
+}
+
+const FLAGGABLE_PROMPTS = {
+  bin: {
+    message: 'Command bin name the CLI will export',
+    validate: (d) => validateBin(d) || 'Invalid bin name',
+  },
+  'module-type': {
+    message: 'Select a module type',
+    options: VALID_MODULE_TYPES,
+    validate: (d) => isModuleType(d) || 'Invalid module type',
+  },
+  'package-manager': {
+    message: 'Select a package manager',
+    options: VALID_PACKAGE_MANAGERS,
+    validate: (d) => isPackageManager(d) || 'Invalid package manager',
+  },
+  'topic-separator': {
+    message: 'Select a topic separator',
+    options: ['colons', 'spaces'],
+    validate: (d) => d === 'colons' || d === 'spaces' || 'Invalid topic separator',
+  },
+} satisfies Record<string, FlaggablePrompt>
+
+export default class Generate extends GeneratorCommand<typeof Generate> {
+  static description =
+    'This will add the necessary oclif bin files, add oclif config to package.json, and install @oclif/core and ts-node.'
+
+  static examples = [
+    {
+      command: '<%= config.bin %> <%= command.id %>',
+      description: 'Initialize a new CLI in the current directory',
+    },
+    {
+      command: '<%= config.bin %> <%= command.id %> --output-dir "/path/to/existing/project"',
+      description: 'Initialize a new CLI in a different directory',
+    },
+    {
+      command: '<%= config.bin %> <%= command.id %> --topic-separator colons --bin mycli',
+      description: 'Supply answers for specific prompts',
+    },
+  ]
+
+  static flaggablePrompts = FLAGGABLE_PROMPTS
+
+  static flags = {
+    ...makeFlags(FLAGGABLE_PROMPTS),
+    'output-dir': Flags.directory({
+      char: 'd',
+      description: 'Directory to initialize the CLI in.',
+      exists: true,
+    }),
+    yes: Flags.boolean({
+      aliases: ['defaults'],
+      char: 'y',
+      description: 'Use defaults for all prompts. Individual flags will override defaults.',
+    }),
+  }
+
+  static summary = 'Initialize a new oclif CLI'
+
+  async run(): Promise<void> {
+    const outputDir = this.flags['output-dir'] ?? process.cwd()
+    const location = resolve(outputDir)
+
+    this.log(`Initializing oclif in ${chalk.green(location)}`)
+
+    const packageJSON = (await readPJSON(location))!
+    if (!packageJSON) {
+      throw new Errors.CLIError(`Could not find a package.json file in ${location}`)
+    }
+
+    const bin = await this.getFlagOrPrompt({
+      defaultValue: location.split(sep).at(-1) || '',
+      name: 'bin',
+      type: 'input',
+    })
+
+    const topicSeparator = await this.getFlagOrPrompt({
+      defaultValue: 'spaces',
+      name: 'topic-separator',
+      type: 'select',
+    })
+
+    const moduleType = await this.getFlagOrPrompt({
+      defaultValue: packageJSON.type === 'module' ? 'ESM' : 'CommonJS',
+      async maybeOtherValue() {
+        return packageJSON.type === 'module' ? 'ESM' : packageJSON.type === 'commonjs' ? 'CommonJS' : undefined
+      },
+      name: 'module-type',
+      type: 'select',
+    })
+
+    const packageManager = await this.getFlagOrPrompt({
+      defaultValue: 'npm',
+      async maybeOtherValue() {
+        const rootFiles = await readdir(location)
+        if (rootFiles.includes('package-lock.json')) {
+          return 'npm'
+        }
+
+        if (rootFiles.includes('yarn.lock')) {
+          return 'yarn'
+        }
+
+        if (rootFiles.includes('pnpm-lock.yaml')) {
+          return 'pnpm'
+        }
+      },
+      name: 'package-manager',
+      type: 'select',
+    })
+
+    this.log(`Using module type ${chalk.green(moduleType)}`)
+    this.log(`Using package manager ${chalk.green(packageManager)}`)
+
+    const projectBinPath = join(location, 'bin')
+    const templateBinPath = join(this.templatesDir, 'cli', moduleType.toLowerCase(), 'bin')
+    await this.template(join(templateBinPath, 'dev.cmd.ejs'), join(projectBinPath, 'dev.cmd'))
+    await this.template(join(templateBinPath, 'dev.js.ejs'), join(projectBinPath, 'dev.js'))
+    await this.template(join(templateBinPath, 'run.cmd.ejs'), join(projectBinPath, 'run.cmd'))
+    await this.template(join(templateBinPath, 'run.js.ejs'), join(projectBinPath, 'run.js'))
+
+    if (process.platform !== 'win32') {
+      await exec(`chmod +x "${join(projectBinPath, 'run.js')}"`)
+      await exec(`chmod +x "${join(projectBinPath, 'dev.js')}"`)
+    }
+
+    const updatedPackageJSON = {
+      ...packageJSON,
+      bin: {
+        ...packageJSON.bin,
+        [bin]: './bin/run.js',
+      },
+      oclif: {
+        bin,
+        commands: './dist/commands',
+        dirname: bin,
+        topicSeparator: topicSeparator === 'colons' ? ':' : ' ',
+        ...packageJSON.oclif,
+      },
+    }
+
+    await writeFile(join(location, 'package.json'), JSON.stringify(updatedPackageJSON, null, 2))
+
+    const installedDeps = Object.keys(packageJSON.dependencies ?? {})
+    if (!installedDeps.includes('@oclif/core')) {
+      this.log('Installing @oclif/core')
+      await exec(`${packageManager} ${packageManager === 'yarn' ? 'add' : 'install'} @oclif/core`, {
+        cwd: location,
+        silent: false,
+      })
+    }
+
+    const allInstalledDeps = new Set([...installedDeps, ...Object.keys(packageJSON.devDependencies ?? {})])
+    if (!allInstalledDeps.has('ts-node')) {
+      this.log('Installing ts-node')
+      await exec(`${packageManager} ${packageManager === 'yarn' ? 'add --dev' : 'install --save-dev'} ts-node`, {
+        cwd: location,
+        silent: false,
+      })
+    }
+
+    if (!allInstalledDeps.has('@types/node')) {
+      this.log('@types/node')
+      await exec(
+        `${packageManager} ${packageManager === 'yarn' ? 'add --dev' : 'install --save-dev'} @types/node@^18`,
+        {
+          cwd: location,
+          silent: false,
+        },
+      )
+    }
+
+    this.log(`\nCreated CLI ${chalk.green(bin)}`)
+  }
+}
diff --git a/src/commands/lock.ts b/src/commands/lock.ts
new file mode 100644
index 000000000..e7820ceb1
--- /dev/null
+++ b/src/commands/lock.ts
@@ -0,0 +1,35 @@
+import {Command} from '@oclif/core'
+import * as fs from 'node:fs/promises'
+
+const fileExists = async (path: string): Promise<boolean> => {
+  try {
+    await fs.access(path)
+    return true
+  } catch {
+    return false
+  }
+}
+
+export default class Lock extends Command {
+  public async run(): Promise<void> {
+    if (await fileExists('yarn.lock')) {
+      this.log('Copying yarn.lock to oclif.lock')
+      await fs.copyFile('yarn.lock', 'oclif.lock')
+    } else {
+      throw this.error('yarn.lock does not exist')
+    }
+  }
+
+  static {
+    this.hidden = true
+    this.state = 'deprecated'
+    this.summary = 'Copy the yarn.lock to oclif.lock'
+    this.deprecationOptions = {
+      message: 'oclif.lock is deprecated and will be removed in @oclif/plugin-plugins v5.0.0 and above.',
+    }
+    this.description = `Using oclif.lock allows your plugins dependencies to be locked to the version specified in the lock file during plugin install.
+Once the oclif.lock file is created you can include it your npm package by adding it to the files property of your package.json. We do not recommend committing the oclif.lock file to git.
+
+PLEASE NOTE: the oclif.lock will only work for @oclif/plugin-plugins v3.4.0 and above. It will NOT be supported in v5.0.0 and above.`
+  }
+}
diff --git a/src/commands/manifest.ts b/src/commands/manifest.ts
index a336f939a..ce73264b4 100644
--- a/src/commands/manifest.ts
+++ b/src/commands/manifest.ts
@@ -1,13 +1,17 @@
-import {Args, Command, Plugin, ux, Flags, Interfaces} from '@oclif/core'
-import * as fs from 'fs-extra'
-import * as path from 'path'
-import * as os from 'os'
-import * as semver from 'semver'
-import {exec, ShellString, ExecOptions} from 'shelljs'
+import {Args, Command, Flags, Interfaces, Plugin, ux} from '@oclif/core'
+import {access, createWriteStream, mkdir, readJSON, readJSONSync, remove, unlinkSync, writeFileSync} from 'fs-extra'
+import {ExecOptions, exec} from 'node:child_process'
+import * as os from 'node:os'
+import * as path from 'node:path'
+import {pipeline as pipelineSync} from 'node:stream'
+import {promisify} from 'node:util'
+import {maxSatisfying} from 'semver'
+
+const pipeline = promisify(pipelineSync)
 
 async function fileExists(filePath: string): Promise<boolean> {
   try {
-    await fs.access(filePath)
+    await access(filePath)
     return true
   } catch {
     return false
@@ -15,57 +19,59 @@ async function fileExists(filePath: string): Promise<boolean> {
 }
 
 export default class Manifest extends Command {
-  static description = 'generates plugin manifest json'
-
   static args = {
-    path: Args.string({description: 'path to plugin', default: '.'}),
+    path: Args.string({default: '.', description: 'Path to plugin.'}),
   }
 
+  static description = 'Generates plugin manifest json (oclif.manifest.json).'
+
   static flags = {
     jit: Flags.boolean({
       allowNo: true,
-      summary: 'append commands from JIT plugins in manifest',
       default: true,
+      summary: 'Append commands from JIT plugins in manifest.',
     }),
   }
 
-  async run(): Promise<void> {
+  public async run(): Promise<Interfaces.Manifest> {
     const {flags} = await this.parse(Manifest)
     try {
-      fs.unlinkSync('oclif.manifest.json')
+      unlinkSync('oclif.manifest.json')
     } catch {}
 
     const {args} = await this.parse(Manifest)
     const root = path.resolve(args.path)
 
-    const packageJson = fs.readJSONSync('package.json') as { oclif: { jitPlugins: Record<string, string> } }
+    const packageJson = readJSONSync('package.json') as Interfaces.PJSON
 
     let jitPluginManifests: Interfaces.Manifest[] = []
 
     if (flags.jit && packageJson.oclif?.jitPlugins) {
       this.debug('jitPlugins: %s', packageJson.oclif.jitPlugins)
       const tmpDir = os.tmpdir()
+      const {default: got} = await import('got')
       const promises = Object.entries(packageJson.oclif.jitPlugins).map(async ([jitPlugin, version]) => {
         const pluginDir = jitPlugin.replace('/', '-').replace('@', '')
-        const repo = this.executeCommand(`npm view ${jitPlugin}@latest repository --json`)
-        const stdout = JSON.parse(repo.stdout)
-
-        const repoUrl = stdout.url.replace(`${stdout.type}+`, '')
 
         const fullPath = path.join(tmpDir, pluginDir)
-        if (await fileExists(fullPath)) await fs.remove(fullPath)
 
-        const versions = JSON.parse(this.executeCommand(`npm view ${jitPlugin}@latest versions --json`).stdout)
-        const maxSatisfying = semver.maxSatisfying(versions, version)
+        if (await fileExists(fullPath)) await remove(fullPath)
 
-        this.cloneRepo(repoUrl, fullPath, maxSatisfying)
+        await mkdir(fullPath, {recursive: true})
 
-        this.executeCommand('yarn', {cwd: fullPath})
-        this.executeCommand('yarn tsc', {cwd: fullPath})
-        const plugin = new Plugin({root: fullPath, type: 'jit', ignoreManifest: true, errorOnManifestCreate: true})
-        await plugin.load()
+        const resolvedVersion = await this.getVersion(jitPlugin, version)
+        const tarballUrl = await this.getTarballUrl(jitPlugin, resolvedVersion)
+        const tarball = path.join(fullPath, path.basename(tarballUrl))
+        await pipeline(got.stream(tarballUrl), createWriteStream(tarball))
 
-        return plugin.manifest
+        await this.executeCommand(`tar -xzf "${tarball}"`, {cwd: fullPath})
+
+        const manifest = (await readJSON(path.join(fullPath, 'package', 'oclif.manifest.json'))) as Interfaces.Manifest
+        for (const command of Object.values(manifest.commands)) {
+          command.pluginType = 'jit'
+        }
+
+        return manifest
       })
 
       ux.action.start('Generating JIT plugin manifests')
@@ -73,18 +79,30 @@ export default class Manifest extends Command {
       ux.action.stop()
     }
 
-    let plugin = new Plugin({root, type: 'core', ignoreManifest: true, errorOnManifestCreate: true})
+    let plugin = new Plugin({
+      errorOnManifestCreate: true,
+      ignoreManifest: true,
+      respectNoCacheDefault: true,
+      root,
+      type: 'core',
+    })
+
     if (!plugin) throw new Error('plugin not found')
-    await plugin.load(true)
+    await plugin.load()
     if (!plugin.valid) {
-      const p = require.resolve('@oclif/plugin-legacy', {paths: [process.cwd()]})
-      const {PluginLegacy} = require(p)
+      const {PluginLegacy} = await import('@oclif/plugin-legacy')
+      // @ts-expect-error for now because PluginLegacy doesn't use the same major of @oclif/core
       plugin = new PluginLegacy(this.config, plugin)
       await plugin.load()
     }
 
-    if (process.env.OCLIF_NEXT_VERSION) {
-      plugin.manifest.version = process.env.OCLIF_NEXT_VERSION
+    if (!Array.isArray(plugin.pjson.files)) {
+      this.error('The package.json has to contain a "files" array', {
+        ref: 'https://docs.npmjs.com/cli/v10/configuring-npm/package-json#files',
+        suggestions: [
+          'Add a "files" property in the package.json listing the paths to the files that should be included in the published package',
+        ],
+      })
     }
 
     const dotfile = plugin.pjson.files.find((f: string) => f.endsWith('.oclif.manifest.json'))
@@ -94,32 +112,52 @@ export default class Manifest extends Command {
       plugin.manifest.commands = {...plugin.manifest.commands, ...manifest.commands}
     }
 
-    fs.writeFileSync(file, JSON.stringify(plugin.manifest, null, 2))
+    writeFileSync(file, JSON.stringify(plugin.manifest, null, 2))
 
     this.log(`wrote manifest to ${file}`)
+
+    return plugin.manifest
   }
 
-  private cloneRepo(repoUrl: string, fullPath: string, tag: string | semver.SemVer | null): void {
-    try {
-      this.executeCommand(`git clone --branch ${tag} ${repoUrl} ${fullPath} --depth 1`)
-    } catch {
-      try {
-        this.executeCommand(`git clone --branch v${tag} ${repoUrl} ${fullPath} --depth 1`)
-      } catch {
-        throw new Error(`Unable to clone repo ${repoUrl} with tag ${tag}`)
-      }
+  private async executeCommand(command: string, options?: ExecOptions): Promise<{stderr: string; stdout: string}> {
+    return new Promise((resolve) => {
+      exec(command, options, (error, stderr, stdout) => {
+        if (error) this.error(error)
+        const debugString = options?.cwd
+          ? `executing command: ${command} in ${options.cwd}`
+          : `executing command: ${command}`
+        this.debug(debugString)
+        this.debug(stdout)
+        this.debug(stderr)
+        resolve({stderr: stderr.toString(), stdout: stdout.toString()})
+      })
+    })
+  }
+
+  private async getTarballUrl(plugin: string, version: string): Promise<string> {
+    const {stderr} = await this.executeCommand(`npm view ${plugin}@${version} --json`)
+    const {dist} = JSON.parse(stderr) as {
+      dist: {tarball: string}
     }
+    return dist.tarball
   }
 
-  private executeCommand(command: string, options?: ExecOptions): ShellString {
-    const debugString = options?.cwd ? `executing command: ${command} in ${options.cwd}` : `executing command: ${command}`
-    this.debug(debugString)
-    const result = exec(command, {...options, silent: true, async: false})
-    if (result.code !== 0) {
-      this.error(result.stderr)
+  private async getVersion(plugin: string, version: string): Promise<string> {
+    if (version.startsWith('^') || version.startsWith('~')) {
+      // Grab latest from npm to get all the versions so we can find the max satisfying version.
+      // We explicitly ask for latest since this command is typically run inside of `npm prepack`,
+      // which sets the npm_config_tag env var, which is used as the default anytime a tag isn't
+      // provided to `npm view`. This can be problematic if you're building the `nightly` version
+      // of a CLI and all the JIT plugins don't have a `nightly` tag themselves.
+      // TL;DR - always ask for latest to avoid potentially requesting a non-existent tag.
+      const {stderr} = await this.executeCommand(`npm view ${plugin}@latest --json`)
+      const {versions} = JSON.parse(stderr) as {
+        versions: string[]
+      }
+
+      return maxSatisfying(versions, version) ?? version.replace('^', '').replace('~', '')
     }
 
-    this.debug(result.stdout)
-    return result
+    return version
   }
 }
diff --git a/src/commands/pack/deb.ts b/src/commands/pack/deb.ts
index fd0cae15f..628785e19 100644
--- a/src/commands/pack/deb.ts
+++ b/src/commands/pack/deb.ts
@@ -1,18 +1,19 @@
 import {Command, Flags, Interfaces} from '@oclif/core'
 import * as fs from 'fs-extra'
-import * as _ from 'lodash'
-import * as path from 'path'
+import {exec as execSync} from 'node:child_process'
+import * as fsPromises from 'node:fs/promises'
+import * as path from 'node:path'
+import {promisify} from 'node:util'
+
 import * as Tarballs from '../../tarballs'
 import {debArch, debVersion, templateShortKey} from '../../upload-util'
-import {exec as execSync} from 'child_process'
-import {promisify} from 'node:util'
+import {uniq} from '../../util'
 
 const exec = promisify(execSync)
 
 const scripts = {
   /* eslint-disable no-useless-escape */
-  bin: (config: Interfaces.Config,
-  ) => `#!/usr/bin/env bash
+  bin: (config: Interfaces.Config) => `#!/usr/bin/env bash
 set -e
 echoerr() { echo "$@" 1>&2; }
 get_script_dir () {
@@ -28,7 +29,9 @@ get_script_dir () {
   echo "\$DIR"
 }
 DIR=\$(get_script_dir)
-export ${config.scopedEnvVarKey('UPDATE_INSTRUCTIONS')}="update with \\"sudo apt update && sudo apt install ${config.bin}\\""
+export ${config.scopedEnvVarKey('UPDATE_INSTRUCTIONS')}="update with \\"sudo apt update && sudo apt install ${
+    config.bin
+  }\\""
 \$DIR/node \$DIR/run "\$@"
 `,
   /* eslint-enable no-useless-escape */
@@ -41,8 +44,7 @@ Maintainer: ${config.config.scopedEnvVar('AUTHOR') || config.config.pjson.author
 Description: ${config.config.pjson.description}
 Aliases: ${config.config.binAliases?.join(', ')}
 `,
-  ftparchive: (config: Interfaces.Config,
-  ) => `
+  ftparchive: (config: Interfaces.Config) => `
 APT::FTPArchive::Release {
   Origin "${config.scopedEnvVar('AUTHOR') || config.pjson.author}";
   Suite  "stable";
@@ -50,51 +52,87 @@ APT::FTPArchive::Release {
 }
 
 export default class PackDeb extends Command {
-  static description = 'pack CLI into debian package'
+  static description =
+    'Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.'
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}),
-    tarball: Flags.string({char: 't', description: 'optionally specify a path to a tarball already generated by NPM', required: false}),
+    compression: Flags.option({
+      options: ['gzip', 'none', 'xz', 'zstd'] as const,
+    })({
+      char: 'z',
+      description:
+        'For more details see the `-Zcompress-type` section at https://man7.org/linux/man-pages/man1/dpkg-deb.1.html',
+      summary: 'Override the default compression used by dpkg-deb.',
+    }),
+    'prune-lockfiles': Flags.boolean({description: 'remove lockfiles in the tarball.', exclusive: ['tarball']}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true}),
+    tarball: Flags.string({
+      char: 't',
+      description: 'Optionally specify a path to a tarball already generated by NPM.',
+      exclusive: ['prune-lockfiles'],
+      required: false,
+    }),
   }
 
+  static summary = 'Pack CLI into debian package.'
+
   async run(): Promise<void> {
     if (process.platform !== 'linux') throw new Error('debian packing must be run on linux')
     const {flags} = await this.parse(PackDeb)
     const buildConfig = await Tarballs.buildConfig(flags.root)
     const {config} = buildConfig
-    await Tarballs.build(buildConfig, {platform: 'linux', pack: false, tarball: flags.tarball, parallel: true})
+    await Tarballs.build(buildConfig, {
+      pack: false,
+      parallel: true,
+      platform: 'linux',
+      pruneLockfiles: flags['prune-lockfiles'],
+      tarball: flags.tarball,
+    })
     const dist = buildConfig.dist('deb')
     await fs.emptyDir(dist)
     const build = async (arch: Interfaces.ArchTypes) => {
       this.log(`building debian / ${arch}`)
-      const target: { platform: 'linux'; arch: Interfaces.ArchTypes} = {platform: 'linux', arch}
-      const versionedDebBase = templateShortKey('deb', {bin: config.bin, versionShaRevision: debVersion(buildConfig), arch: debArch(arch) as any})
+      const target: {arch: Interfaces.ArchTypes; platform: 'linux'} = {arch, platform: 'linux'}
+      const versionedDebBase = templateShortKey('deb', {
+        arch: debArch(arch),
+        bin: config.bin,
+        versionShaRevision: debVersion(buildConfig),
+      })
       const workspace = path.join(buildConfig.tmp, 'apt', versionedDebBase.replace('.deb', '.apt'))
       await fs.remove(workspace)
       await Promise.all([
-        fs.promises.mkdir(path.join(workspace, 'DEBIAN'), {recursive: true}),
-        fs.promises.mkdir(path.join(workspace, 'usr', 'bin'), {recursive: true}),
+        fsPromises.mkdir(path.join(workspace, 'DEBIAN'), {recursive: true}),
+        fsPromises.mkdir(path.join(workspace, 'usr', 'bin'), {recursive: true}),
       ])
       await fs.copy(buildConfig.workspace(target), path.join(workspace, 'usr', 'lib', config.dirname))
       await Promise.all([
         // usr/lib/oclif/bin/oclif (the executable)
-        fs.promises.writeFile(path.join(workspace, 'usr', 'lib', config.dirname, 'bin', config.bin), scripts.bin(config), {mode: 0o755}),
-        fs.promises.writeFile(path.join(workspace, 'DEBIAN', 'control'), scripts.control(buildConfig, debArch(arch))),
+        fsPromises.writeFile(
+          path.join(workspace, 'usr', 'lib', config.dirname, 'bin', config.bin),
+          scripts.bin(config),
+          {mode: 0o755},
+        ),
+        fsPromises.writeFile(path.join(workspace, 'DEBIAN', 'control'), scripts.control(buildConfig, debArch(arch))),
       ])
       // symlink usr/bin/oclif points to usr/lib/oclif/bin/oclif
-      await exec(`ln -s "${path.join('..', 'lib', config.dirname, 'bin', config.bin)}" "${config.bin}"`, {cwd: path.join(workspace, 'usr', 'bin')})
+      await exec(`ln -s "${path.join('..', 'lib', config.dirname, 'bin', config.bin)}" "${config.bin}"`, {
+        cwd: path.join(workspace, 'usr', 'bin'),
+      })
 
-      config.binAliases?.map(alias =>  exec(`ln -sf "${path.join('..', 'lib', config.dirname, 'bin', config.bin)}" "${alias}"`, {cwd: path.join(workspace, 'usr', 'bin')}))
+      config.binAliases?.map((alias) =>
+        exec(`ln -sf "${path.join('..', 'lib', config.dirname, 'bin', config.bin)}" "${alias}"`, {
+          cwd: path.join(workspace, 'usr', 'bin'),
+        }),
+      )
       await exec(`sudo chown -R root "${workspace}"`)
       await exec(`sudo chgrp -R root "${workspace}"`)
-      await exec(`dpkg --build "${workspace}" "${path.join(dist, versionedDebBase)}"`)
+      const dpkgDeb = flags.compression ? `dpkg-deb --build "-Z${flags.compression}"` : 'dpkg-deb --build'
+      await exec(`${dpkgDeb} "${workspace}" "${path.join(dist, versionedDebBase)}"`)
       this.log(`finished building debian / ${arch}`)
     }
 
-    const arches = _.uniq(buildConfig.targets
-    .filter(t => t.platform === 'linux')
-    .map(t => t.arch))
-    await Promise.all(arches.map(a => build(a)))
+    const arches = uniq(buildConfig.targets.filter((t) => t.platform === 'linux').map((t) => t.arch))
+    await Promise.all(arches.map((a) => build(a)))
 
     await exec('apt-ftparchive packages . > Packages', {cwd: dist})
     this.log('debian packages created')
@@ -120,8 +158,7 @@ export default class PackDeb extends Command {
 
 async function packForFTP(buildConfig: Tarballs.BuildConfig, config: Interfaces.Config, dist: string) {
   const ftparchive = path.join(buildConfig.tmp, 'apt', 'apt-ftparchive.conf')
-  await fs.promises.mkdir(path.basename(ftparchive), {recursive: true})
+  await fsPromises.mkdir(path.basename(ftparchive), {recursive: true})
   await fs.writeFile(ftparchive, scripts.ftparchive(config))
   await exec(`apt-ftparchive -c "${ftparchive}" release . > Release`, {cwd: dist})
 }
-
diff --git a/src/commands/pack/macos.ts b/src/commands/pack/macos.ts
index 879973c7b..af9d10f83 100644
--- a/src/commands/pack/macos.ts
+++ b/src/commands/pack/macos.ts
@@ -1,22 +1,15 @@
-import * as path from 'path'
-
-import * as _ from 'lodash'
-import * as fs from 'fs-extra'
 import {Command, Flags, Interfaces} from '@oclif/core'
+import * as fs from 'fs-extra'
+import {exec as execSync} from 'node:child_process'
+import * as os from 'node:os'
+import * as path from 'node:path'
+import {promisify} from 'node:util'
 
 import * as Tarballs from '../../tarballs'
 import {templateShortKey} from '../../upload-util'
-import {exec as execSync} from 'child_process'
-import {promisify} from 'node:util'
-import * as os from 'os'
+import {uniq} from '../../util'
 
 const exec = promisify(execSync)
-type OclifConfig = {
-  macos?: {
-    identifier?: string;
-    sign?: string;
-  };
-}
 
 const noBundleConfiguration = `<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@@ -26,24 +19,37 @@ const noBundleConfiguration = `<?xml version="1.0" encoding="UTF-8"?>
 `
 
 const scripts = {
-  preinstall: (config: Interfaces.Config, additionalCLI: string | undefined) => `#!/usr/bin/env bash
-sudo rm -rf /usr/local/lib/${config.dirname}
-sudo rm -rf /usr/local/${config.bin}
-sudo rm -rf /usr/local/bin/${config.bin}
-${additionalCLI ?
-    `sudo rm -rf /usr/local/${additionalCLI}
-sudo rm -rf /usr/local/bin/${additionalCLI}` : ''}
-${config.binAliases ? config.binAliases.map(alias => `sudo rm -rf /usr/local/bin/${alias}`).join(os.EOL) : ''}
-`,
   postinstall: (config: Interfaces.Config, additionalCLI: string | undefined) => `#!/usr/bin/env bash
 set -x
 sudo mkdir -p /usr/local/bin
 sudo ln -sf /usr/local/lib/${config.dirname}/bin/${config.bin} /usr/local/bin/${config.bin}
-${config.binAliases ? config.binAliases?.map(alias => `sudo ln -sf /usr/local/lib/${config.dirname}/bin/${config.bin} /usr/local/bin/${alias}`).join(os.EOL) : ''}
-${additionalCLI ? `sudo ln -sf /usr/local/lib/${config.dirname}/bin/${additionalCLI} /usr/local/bin/${additionalCLI}` : ''}
+${
+  config.binAliases
+    ? config.binAliases
+        ?.map((alias) => `sudo ln -sf /usr/local/lib/${config.dirname}/bin/${config.bin} /usr/local/bin/${alias}`)
+        .join(os.EOL)
+    : ''
+}
+${
+  additionalCLI
+    ? `sudo ln -sf /usr/local/lib/${config.dirname}/bin/${additionalCLI} /usr/local/bin/${additionalCLI}`
+    : ''
+}
 `,
-  uninstall: (config: Interfaces.Config, additionalCLI: string | undefined) => {
-    const packageIdentifier = (config.pjson.oclif as OclifConfig).macos!.identifier!
+  preinstall: (config: Interfaces.Config, additionalCLI: string | undefined) => `#!/usr/bin/env bash
+sudo rm -rf /usr/local/lib/${config.dirname}
+sudo rm -rf /usr/local/${config.bin}
+sudo rm -rf /usr/local/bin/${config.bin}
+${
+  additionalCLI
+    ? `sudo rm -rf /usr/local/${additionalCLI}
+sudo rm -rf /usr/local/bin/${additionalCLI}`
+    : ''
+}
+${config.binAliases ? config.binAliases.map((alias) => `sudo rm -rf /usr/local/bin/${alias}`).join(os.EOL) : ''}
+`,
+  uninstall(config: Interfaces.Config, additionalCLI: string | undefined) {
+    const packageIdentifier = (config.pjson.oclif as Interfaces.PJSON['plugin']).macos!.identifier!
     return `#!/usr/bin/env bash
 
 #Parameters
@@ -82,7 +88,11 @@ done
 
 echo "Application uninstalling process started"
 # remove bin aliases link
-${config.binAliases ? config.binAliases.map(alias => `find "/usr/local/bin/" -name "${alias}" | xargs rm`).join(os.EOL) : ''}
+${
+  config.binAliases
+    ? config.binAliases.map((alias) => `find "/usr/local/bin/" -name "${alias}" | xargs rm`).join(os.EOL)
+    : ''
+}
 # remove link to shortcut file
 find "/usr/local/bin/" -name "${config.bin}" | xargs rm
 ${additionalCLI ? `find "/usr/local/bin/" -name "${additionalCLI}" | xargs rm` : ''}
@@ -128,59 +138,77 @@ exit 0
 }
 
 export default class PackMacos extends Command {
-  static description = 'pack CLI into macOS .pkg'
+  static description =
+    'Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.'
 
   static flags = {
+    'additional-cli': Flags.string({
+      description: `An Oclif CLI other than the one listed in config.bin that should be made available to the user
+the CLI should already exist in a directory named after the CLI that is the root of the tarball produced by "oclif pack:tarballs"`,
+      hidden: true,
+    }),
+    'prune-lockfiles': Flags.boolean({description: 'remove lockfiles in the tarball.', exclusive: ['tarball']}),
     root: Flags.string({
       char: 'r',
-      description: 'path to oclif CLI root',
       default: '.',
+      description: 'Path to oclif CLI root.',
       required: true,
     }),
-    'additional-cli': Flags.string({
-      description: `an Oclif CLI other than the one listed in config.bin that should be made available to the user
-the CLI should already exist in a directory named after the CLI that is the root of the tarball produced by "oclif pack:tarballs"`,
-      hidden: true,
-    }),
     tarball: Flags.string({
       char: 't',
-      description: 'optionally specify a path to a tarball already generated by NPM',
+      description: 'Optionally specify a path to a tarball already generated by NPM.',
+      exclusive: ['prune-lockfiles'],
       required: false,
     }),
     targets: Flags.string({
-      description: 'comma-separated targets to pack (e.g.: darwin-x64,darwin-arm64)',
+      description: 'Comma-separated targets to pack (e.g.: darwin-x64,darwin-arm64).',
     }),
   }
 
+  static summary = 'Pack CLI into macOS .pkg'
+
   async run(): Promise<void> {
     if (process.platform !== 'darwin') this.error('must be run from macos')
     const {flags} = await this.parse(PackMacos)
     const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(',')})
     const {config} = buildConfig
-    const c = config.pjson.oclif as OclifConfig
+    const c = config.pjson.oclif
     if (!c.macos) this.error('package.json is missing an oclif.macos config')
     if (!c.macos.identifier) this.error('package.json must have oclif.macos.identifier set')
     const macos = c.macos
     const packageIdentifier = macos.identifier
-    await Tarballs.build(buildConfig, {platform: 'darwin', pack: false, tarball: flags.tarball, parallel: true})
+    await Tarballs.build(buildConfig, {
+      pack: false,
+      parallel: true,
+      platform: 'darwin',
+      pruneLockfiles: flags['prune-lockfiles'],
+      tarball: flags.tarball,
+    })
     const scriptsDir = path.join(buildConfig.tmp, 'macos/scripts')
     await fs.emptyDir(buildConfig.dist('macos'))
     const noBundleConfigurationPath = path.join(buildConfig.tmp, 'macos', 'no-bundle.plist')
 
     const build = async (arch: Interfaces.ArchTypes) => {
-      const templateKey = templateShortKey('macos', {bin: config.bin, version: config.version, sha: buildConfig.gitSha, arch})
+      const templateKey = templateShortKey('macos', {
+        arch,
+        bin: config.bin,
+        sha: buildConfig.gitSha,
+        version: config.version,
+      })
       const dist = buildConfig.dist(`macos/${templateKey}`)
-      const rootDir = buildConfig.workspace({platform: 'darwin', arch})
+      const rootDir = buildConfig.workspace({arch, platform: 'darwin'})
       const writeNoBundleConfiguration = async () => {
         await fs.mkdir(path.dirname(noBundleConfigurationPath), {recursive: true})
         await fs.writeFile(noBundleConfigurationPath, noBundleConfiguration, {mode: 0o755})
       }
 
-      const writeScript = async (script: 'preinstall' | 'postinstall' | 'uninstall') => {
+      const writeScript = async (script: 'postinstall' | 'preinstall' | 'uninstall') => {
         const scriptLocation = script === 'uninstall' ? [rootDir, 'bin'] : [scriptsDir]
         scriptLocation.push(script)
         await fs.mkdir(path.dirname(path.join(...scriptLocation)), {recursive: true})
-        await fs.writeFile(path.join(...scriptLocation), scripts[script](config, flags['additional-cli']), {mode: 0o755})
+        await fs.writeFile(path.join(...scriptLocation), scripts[script](config, flags['additional-cli']), {
+          mode: 0o755,
+        })
       }
 
       await Promise.all([
@@ -189,16 +217,22 @@ the CLI should already exist in a directory named after the CLI that is the root
         writeScript('postinstall'),
         writeScript('uninstall'),
       ])
-      /* eslint-disable array-element-newline */
+
       const args = [
-        '--root', rootDir,
-        '--component-plist', noBundleConfigurationPath,
-        '--identifier', packageIdentifier,
-        '--version', config.version,
-        '--install-location', `/usr/local/lib/${config.dirname}`,
-        '--scripts', scriptsDir,
+        '--root',
+        rootDir,
+        '--component-plist',
+        noBundleConfigurationPath,
+        '--identifier',
+        packageIdentifier,
+        '--version',
+        config.version,
+        '--install-location',
+        `/usr/local/lib/${config.dirname}`,
+        '--scripts',
+        scriptsDir,
       ]
-      /* eslint-enable array-element-newline */
+
       if (macos.sign) {
         args.push('--sign', macos.sign)
       } else this.debug('Skipping macOS pkg signing')
@@ -207,9 +241,7 @@ the CLI should already exist in a directory named after the CLI that is the root
       await exec(`pkgbuild  ${args.join(' ')}`)
     }
 
-    const arches = _.uniq(buildConfig.targets
-    .filter(t => t.platform === 'darwin')
-    .map(t => t.arch))
-    await Promise.all(arches.map(a => build(a)))
+    const arches = uniq(buildConfig.targets.filter((t) => t.platform === 'darwin').map((t) => t.arch))
+    await Promise.all(arches.map((a) => build(a)))
   }
 }
diff --git a/src/commands/pack/tarballs.ts b/src/commands/pack/tarballs.ts
index 8121615c5..ad1cf0ff5 100644
--- a/src/commands/pack/tarballs.ts
+++ b/src/commands/pack/tarballs.ts
@@ -3,30 +3,37 @@ import {Command, Flags} from '@oclif/core'
 import * as Tarballs from '../../tarballs'
 
 export default class PackTarballs extends Command {
-  static description = `packages oclif CLI into tarballs
+  static description = `This can be used to create oclif CLIs that use the system node or that come preloaded with a node binary.
 
-This can be used to create oclif CLIs that use the system node or that come preloaded with a node binary.
-`
+Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.`
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}),
-    targets: Flags.string({char: 't', description: 'comma-separated targets to pack (e.g.: linux-arm,win32-x64)'}),
-    xz: Flags.boolean({description: 'also build xz', allowNo: true}),
-    parallel: Flags.boolean({description: 'build tarballs in parallel'}),
-    tarball: Flags.string({char: 'l', description: 'optionally specify a path to a tarball already generated by NPM', required: false}),
+    parallel: Flags.boolean({description: 'Build tarballs in parallel.'}),
+    'prune-lockfiles': Flags.boolean({description: 'remove lockfiles in the tarball.'}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true}),
+    tarball: Flags.string({
+      char: 'l',
+      description: 'Optionally specify a path to a tarball already generated by NPM.',
+      required: false,
+    }),
+    targets: Flags.string({char: 't', description: 'Comma-separated targets to pack (e.g.: linux-arm,win32-x64).'}),
+    xz: Flags.boolean({allowNo: true, description: 'Also build xz.'}),
   }
 
+  static summary = 'Package oclif CLI into tarballs.'
+
   async run(): Promise<void> {
-    if (process.platform === 'win32') throw new Error('pack does not function on windows')
     const {flags} = await this.parse(PackTarballs)
-    const buildConfig = await Tarballs.buildConfig(flags.root, {xz: flags.xz, targets: flags?.targets?.split(',')})
+    const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(','), xz: flags.xz})
     if (buildConfig.targets.length === 0) {
       throw new Error('Please specify one or more valid targets.')
     }
 
     await Tarballs.build(buildConfig, {
-      tarball: flags.tarball,
       parallel: flags.parallel,
+      ...(process.platform === 'win32' ? {platform: 'win32'} : {}),
+      pruneLockfiles: flags['prune-lockfiles'],
+      tarball: flags.tarball,
     })
   }
 }
diff --git a/src/commands/pack/win.ts b/src/commands/pack/win.ts
index 28e263327..698e5f0ac 100644
--- a/src/commands/pack/win.ts
+++ b/src/commands/pack/win.ts
@@ -1,35 +1,46 @@
 import {Command, Flags, Interfaces} from '@oclif/core'
-import * as path from 'path'
-import * as fs from 'fs-extra'
+import {move} from 'fs-extra'
+import {exec as execSync} from 'node:child_process'
+import {readFileSync} from 'node:fs'
+import {mkdir, rm, writeFile} from 'node:fs/promises'
+import * as path from 'node:path'
+import {promisify} from 'node:util'
+
 import * as Tarballs from '../../tarballs'
 import {templateShortKey} from '../../upload-util'
-import {exec as execSync} from 'child_process'
-import {promisify} from 'node:util'
 
 const exec = promisify(execSync)
 
 const scripts = {
   /* eslint-disable no-useless-escape */
-  // eslint-disable-next-line unicorn/no-useless-undefined
-  cmd: (config: Interfaces.Config, additionalCLI: string | undefined = undefined) => `@echo off
+
+  cmd: (config: Interfaces.Config, additionalCLI?: string | undefined) => `@echo off
 setlocal enableextensions
 
-set ${additionalCLI ? `${additionalCLI.toUpperCase()}_BINPATH` : config.scopedEnvVarKey('BINPATH')}=%~dp0\\${additionalCLI ?? config.bin}.cmd
+set ${additionalCLI ? `${additionalCLI.toUpperCase()}_BINPATH` : config.scopedEnvVarKey('BINPATH')}=%~dp0\\${
+    additionalCLI ?? config.bin
+  }.cmd
 if exist "%LOCALAPPDATA%\\${config.dirname}\\client\\bin\\${additionalCLI ?? config.bin}.cmd" (
   "%LOCALAPPDATA%\\${config.dirname}\\client\\bin\\${additionalCLI ?? config.bin}.cmd" %*
 ) else (
-  "%~dp0\\..\\client\\bin\\node.exe" "%~dp0\\..\\client\\${additionalCLI ? `${additionalCLI}\\bin\\run` : 'bin\\run'}" %*
+  "%~dp0\\..\\client\\bin\\node.exe" "%~dp0\\..\\client\\${
+    additionalCLI ? `${additionalCLI}\\bin\\run` : 'bin\\run'
+  }" %*
 )
 `,
-  sh: (config: Interfaces.Config) => `#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-"$basedir/../client/bin/${config.bin}.cmd" "$@"
-ret=$?
-exit $ret
-`,
-  nsis: (config: Interfaces.Config
-    , arch: string) => `!include MUI2.nsh
+  nsis: ({
+    arch,
+    config,
+    customization,
+    defenderOptional,
+    hideDefenderOption,
+  }: {
+    arch: string
+    config: Interfaces.Config
+    customization?: string
+    defenderOptional: boolean
+    hideDefenderOption: boolean
+  }) => `!include MUI2.nsh
 
 !define Version '${config.version.split('-')[0]}'
 Name "${config.name}"
@@ -57,6 +68,8 @@ VIAddVersionKey /LANG=\${LANG_ENGLISH} "ProductVersion" "\${VERSION}.0"
 
 InstallDir "\$PROGRAMFILES${arch === 'x64' ? '64' : ''}\\${config.dirname}"
 
+${customization}
+
 Section "${config.name} CLI \${VERSION}"
   SetOutPath $INSTDIR
   File /r bin
@@ -80,8 +93,12 @@ Section "Set PATH to ${config.name}"
   Call AddToPath
 SectionEnd
 
-Section "Add %LOCALAPPDATA%\\${config.dirname} to Windows Defender exclusions (highly recommended for performance!)"
-  ExecShell "" '"$0"' "/C powershell -ExecutionPolicy Bypass -Command $\\"& {Add-MpPreference -ExclusionPath $\\"$LOCALAPPDATA\\${config.dirname}$\\"}$\\" -FFFeatureOff" SW_HIDE
+Section ${defenderOptional ? '/o ' : ''}"${hideDefenderOption ? '-' : ''}Add %LOCALAPPDATA%\\${
+    config.dirname
+  } to Windows Defender exclusions (highly recommended for performance!)"
+  ExecShell "" '"$0"' "/C powershell -ExecutionPolicy Bypass -Command $\\"& {Add-MpPreference -ExclusionPath $\\"$LOCALAPPDATA\\${
+    config.dirname
+  }$\\"}$\\" -FFFeatureOff" SW_HIDE
 SectionEnd
 
 Section "Uninstall"
@@ -195,103 +212,188 @@ done:
   Pop $R2
   Exch $R1 ; $R1=old$R1, stack=[result,...]
 FunctionEnd
+`,
+  sh: (config: Interfaces.Config) => `#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
+
+"$basedir/../client/bin/${config.bin}.cmd" "$@"
+ret=$?
+exit $ret
 `,
   /* eslint-enable no-useless-escape */
 }
 
 export default class PackWin extends Command {
-  static description = `create windows installer from oclif CLI
+  static description = `You need to have 7zip, nsis (makensis), and grep installed on your machine in order to run this command.
 
-  This command requires WINDOWS_SIGNING (prefixed with the name of your executable, e.g. OCLIF_WINDOWS_SIGNING_PASS) to be set in the environment`
+This command will produce unsigned installers unless you supply WINDOWS_SIGNING_PASS (prefixed with the name of your executable, e.g. OCLIF_WINDOWS_SIGNING_PASS) in the environment and have set the windows.name and windows.keypath properties in your package.json's oclif property.
+
+Add a pretarball script to your package.json if you need to run any scripts before the tarball is created.`
 
   static flags = {
+    'additional-cli': Flags.string({
+      description: `An Oclif CLI other than the one listed in config.bin that should be made available to the user
+the CLI should already exist in a directory named after the CLI that is the root of the tarball produced by "oclif pack:tarballs".`,
+      hidden: true,
+    }),
+    'defender-exclusion': Flags.option({
+      options: ['checked', 'unchecked', 'hidden'] as const,
+    })({
+      default: 'checked',
+      description:
+        'There is no way to set a hidden checkbox with "true" as a default...the user can always allow full security',
+
+      summary: `Set to "checked" or "unchecked" to set the default value for the checkbox.  Set to "hidden" to hide the option (will let defender do its thing).`,
+    }),
+    'prune-lockfiles': Flags.boolean({description: 'remove lockfiles in the tarball.', exclusive: ['tarball']}),
     root: Flags.string({
       char: 'r',
-      description: 'path to oclif CLI root',
       default: '.',
+      description: 'Path to oclif CLI root.',
       required: true,
     }),
-    'additional-cli': Flags.string({
-      description: `an Oclif CLI other than the one listed in config.bin that should be made available to the user
-the CLI should already exist in a directory named after the CLI that is the root of the tarball produced by "oclif pack:tarballs"`,
-      hidden: true,
-    }),
     tarball: Flags.string({
       char: 't',
-      description: 'optionally specify a path to a tarball already generated by NPM',
+      description: 'Optionally specify a path to a tarball already generated by NPM.',
+      exclusive: ['prune-lockfiles'],
       required: false,
     }),
+    targets: Flags.string({
+      description: 'Comma-separated targets to pack (e.g.: win32-x64,win32-x86,win32-arm64).',
+    }),
   }
 
+  static summary = 'Create windows installer from oclif CLI'
+
   async run(): Promise<void> {
     await this.checkForNSIS()
     const {flags} = await this.parse(PackWin)
-    const buildConfig = await Tarballs.buildConfig(flags.root)
+
+    const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(',')})
     const {config} = buildConfig
-    await Tarballs.build(buildConfig, {platform: 'win32', pack: false, tarball: flags.tarball, parallel: true})
-    const arches = buildConfig.targets.filter(t => t.platform === 'win32').map(t => t.arch)
-    await Promise.all(arches.map(async arch => {
-      const installerBase = path.join(buildConfig.tmp, `windows-${arch}-installer`)
-      await fs.promises.rm(installerBase, {recursive: true, force: true})
-      await fs.promises.mkdir(path.join(installerBase, 'bin'), {recursive: true})
-
-      await Promise.all([
-        fs.writeFile(path.join(installerBase, 'bin', `${config.bin}.cmd`), scripts.cmd(config)),
-        fs.writeFile(path.join(installerBase, 'bin', `${config.bin}`), scripts.sh(config)),
-        fs.writeFile(path.join(installerBase, `${config.bin}.nsi`), scripts.nsis(config, arch)),
-      ].concat(config.binAliases ? config.binAliases.flatMap(alias =>
-        // write duplicate files for windows aliases
-        // this avoids mklink which can require admin privileges which not everyone has
-        [fs.writeFile(path.join(installerBase, 'bin', `${alias}.cmd`), scripts.cmd(config)), fs.writeFile(path.join(installerBase, 'bin', `${alias}`), scripts.sh(config))]) : [])
-      .concat(flags['additional-cli'] ? [
-        fs.writeFile(path.join(installerBase, 'bin', `${flags['additional-cli']}.cmd`), scripts.cmd(config, flags['additional-cli'])),
-        fs.writeFile(path.join(installerBase, 'bin', `${flags['additional-cli']}`), scripts.sh({bin: flags['additional-cli']} as Interfaces.Config)),
-      ] : []))
-
-      await fs.move(buildConfig.workspace({platform: 'win32', arch}), path.join(installerBase, 'client'))
-      await exec(`makensis ${installerBase}/${config.bin}.nsi | grep -v "\\[compress\\]" | grep -v "^File: Descending to"`)
-      const templateKey = templateShortKey('win32', {bin: config.bin, version: config.version, sha: buildConfig.gitSha, arch})
-      const o = buildConfig.dist(`win32/${templateKey}`)
-      await fs.move(path.join(installerBase, 'installer.exe'), o)
-
-      const windows = (config.pjson.oclif as any).windows as {name: string; keypath: string; homepage?: string}
-      if (windows && windows.name && windows.keypath) {
-        await signWindows(o, arch, config, windows)
-      } else this.debug('Skipping windows exe signing')
-
-      this.log(`built ${o}`)
-    }))
+    const nsisCustomization = config.nsisCustomization ? readFileSync(config.nsisCustomization, 'utf8') : ''
+    const arches = buildConfig.targets.filter((t) => t.platform === 'win32').map((t) => t.arch)
+
+    await Tarballs.build(buildConfig, {
+      pack: false,
+      parallel: true,
+      platform: 'win32',
+      pruneLockfiles: flags['prune-lockfiles'],
+      tarball: flags.tarball,
+    })
+
+    await Promise.all(
+      arches.map(async (arch) => {
+        const installerBase = path.join(buildConfig.tmp, `windows-${arch}-installer`)
+        await rm(installerBase, {force: true, recursive: true})
+        await mkdir(path.join(installerBase, 'bin'), {recursive: true})
+        await Promise.all([
+          writeFile(path.join(installerBase, 'bin', `${config.bin}.cmd`), scripts.cmd(config)),
+          writeFile(path.join(installerBase, 'bin', `${config.bin}`), scripts.sh(config)),
+          writeFile(
+            path.join(installerBase, `${config.bin}.nsi`),
+            scripts.nsis({
+              arch,
+              config,
+              customization: nsisCustomization,
+              // hiding it also unchecks it
+              defenderOptional: flags['defender-exclusion'] === 'hidden' || flags['defender-exclusion'] === 'unchecked',
+              hideDefenderOption: flags['defender-exclusion'] === 'hidden',
+            }),
+          ),
+          ...(config.binAliases
+            ? config.binAliases.flatMap((alias) =>
+                // write duplicate files for windows aliases
+                // this avoids mklink which can require admin privileges which not everyone has
+                [
+                  writeFile(path.join(installerBase, 'bin', `${alias}.cmd`), scripts.cmd(config)),
+                  writeFile(path.join(installerBase, 'bin', `${alias}`), scripts.sh(config)),
+                ],
+              )
+            : []),
+          ...(flags['additional-cli']
+            ? [
+                writeFile(
+                  path.join(installerBase, 'bin', `${flags['additional-cli']}.cmd`),
+                  scripts.cmd(config, flags['additional-cli']),
+                ),
+                writeFile(
+                  path.join(installerBase, 'bin', `${flags['additional-cli']}`),
+                  scripts.sh({bin: flags['additional-cli']} as Interfaces.Config),
+                ),
+              ]
+            : []),
+        ])
+
+        await move(buildConfig.workspace({arch, platform: 'win32'}), path.join(installerBase, 'client'))
+        await exec(
+          `makensis "${installerBase}/${config.bin}.nsi" | grep -v "\\[compress\\]" | grep -v "^File: Descending to"`,
+        )
+        const templateKey = templateShortKey('win32', {
+          arch,
+          bin: config.bin,
+          sha: buildConfig.gitSha,
+          version: config.version,
+        })
+        const o = buildConfig.dist(`win32/${templateKey}`)
+        await move(path.join(installerBase, 'installer.exe'), o)
+
+        const {windows} = config.pjson.oclif
+        if (windows && windows.name && windows.keypath) {
+          await signWindows(o, arch, config, windows)
+        } else this.debug('Skipping windows exe signing')
+
+        this.log(`built ${o}`)
+      }),
+    )
   }
 
   private async checkForNSIS() {
     try {
       await exec('makensis')
-    } catch (error: any) {
-      if (error.code === 1) return
-      if (error.code === 127) this.error('install makensis')
+    } catch (error: unknown) {
+      const {code} = error as {code: number}
+      if (code === 1) return
+      if (code === 127) this.error('install makensis')
       else throw error
     }
   }
 }
-async function signWindows(o: string, arch: string, config: Interfaces.Config, windows: { name: string; keypath: string; homepage?: string | undefined }) {
+async function signWindows(
+  o: string,
+  arch: string,
+  config: Interfaces.Config,
+  windows: Interfaces.OclifConfiguration['windows'],
+) {
+  if (!windows) {
+    throw new Error('windows not set in oclif configuration')
+  }
+
   const buildLocationUnsigned = o.replace(`${arch}.exe`, `${arch}-unsigned.exe`)
-  await fs.move(o, buildLocationUnsigned)
+  await move(o, buildLocationUnsigned)
 
   const pass = config.scopedEnvVar('WINDOWS_SIGNING_PASS')
   if (!pass) {
     throw new Error(`${config.scopedEnvVarKey('WINDOWS_SIGNING_PASS')} not set in the environment`)
   }
 
-  /* eslint-disable array-element-newline */
   const args = [
-    '-pkcs12', windows.keypath,
-    '-pass', pass,
-    '-n', `"${windows.name}"`,
-    '-i', windows.homepage || config.pjson.homepage,
-    '-h', 'sha512',
-    '-in', buildLocationUnsigned,
-    '-out', o,
+    '-pkcs12',
+    windows.keypath,
+    '-pass',
+    `"${pass}"`,
+    '-n',
+    `"${windows.name}"`,
+    '-i',
+    windows.homepage || config.pjson.homepage,
+    '-t',
+    'http://timestamp.digicert.com',
+    '-h',
+    'sha512',
+    '-in',
+    buildLocationUnsigned,
+    '-out',
+    o,
   ]
   await exec(`osslsigncode sign ${args.join(' ')}`)
 }
-
diff --git a/src/commands/promote.ts b/src/commands/promote.ts
index 7183e5eda..771abb33e 100644
--- a/src/commands/promote.ts
+++ b/src/commands/promote.ts
@@ -1,56 +1,68 @@
-import * as path from 'path'
-
-import * as _ from 'lodash'
-
-import {ux, Command, Flags} from '@oclif/core'
-import { lte } from 'semver'
+import {MetadataDirective, ObjectCannedACL} from '@aws-sdk/client-s3'
+import {Command, Flags, ux} from '@oclif/core'
+import * as path from 'node:path'
 
 import aws from '../aws'
 import * as Tarballs from '../tarballs'
-import {channelAWSDir, commitAWSDir, debVersion, templateShortKey} from '../upload-util'
+import {channelAWSDir, commitAWSDir, debArch, debVersion, templateShortKey} from '../upload-util'
+import {uniq} from '../util'
 import {appendToIndex} from '../version-indexes'
 
 export default class Promote extends Command {
-  static description = 'promote CLI builds to a S3 release channel'
+  static description = 'Promote CLI builds to a S3 release channel.'
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to the oclif CLI project root', default: '.', required: true}),
-    version: Flags.string({description: 'semantic version of the CLI to promote', required: true}),
-    sha: Flags.string({description: '7-digit short git commit SHA of the CLI to promote', required: true}),
-    channel: Flags.string({description: 'which channel to promote to', required: true, default: 'stable'}),
-    targets: Flags.string({char: 't', description: 'comma-separated targets to promote (e.g.: linux-arm,win32-x64)'}),
-    deb: Flags.boolean({char: 'd', description: 'promote debian artifacts'}),
-    macos: Flags.boolean({char: 'm', description: 'promote macOS pkg'}),
-    win: Flags.boolean({char: 'w', description: 'promote Windows exe'}),
-    'max-age': Flags.string({char: 'a', description: 'cache control max-age in seconds', default: '86400'}),
-    xz: Flags.boolean({description: 'also upload xz', allowNo: true}),
-    indexes: Flags.boolean({description: 'append the promoted urls into the index files'}),
+    channel: Flags.string({default: 'stable', description: 'Channel to promote to.', required: true}),
+    deb: Flags.boolean({char: 'd', description: 'Promote debian artifacts.'}),
+    'dry-run': Flags.boolean({
+      description: 'Run the command without uploading to S3 or copying versioned tarballs/installers to channel.',
+    }),
+    'ignore-missing': Flags.boolean({
+      description: 'Ignore missing tarballs/installers and continue promoting the rest.',
+    }),
+    indexes: Flags.boolean({description: 'Append the promoted urls into the index files.'}),
+    macos: Flags.boolean({char: 'm', description: 'Promote macOS pkg.'}),
+    'max-age': Flags.string({char: 'a', default: '86400', description: 'Cache control max-age in seconds.'}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to the oclif CLI project root.', required: true}),
+    sha: Flags.string({description: '7-digit short git commit SHA of the CLI to promote.', required: true}),
+    targets: Flags.string({char: 't', description: 'Comma-separated targets to promote (e.g.: linux-arm,win32-x64).'}),
+    version: Flags.string({description: 'Semantic version of the CLI to promote.', required: true}),
+    win: Flags.boolean({char: 'w', description: 'Promote Windows exe.'}),
+    xz: Flags.boolean({allowNo: true, description: 'Also upload xz.'}),
   }
 
   async run(): Promise<void> {
     const {flags} = await this.parse(Promote)
+    if (flags['ignore-missing']) {
+      this.warn(
+        "--ignore-missing flag is being used - This command will continue to run even if a promotion fails because it doesn't exist",
+      )
+    }
+
+    this.log(`Promoting v${flags.version} (${flags.sha}) to ${flags.channel} channel\n`)
+
     const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(',')})
-    const {s3Config, config} = buildConfig
+    const {config, s3Config} = buildConfig
     const indexDefaults = {
-      version: flags.version,
-      s3Config,
       maxAge: `max-age=${flags['max-age']}`,
+      s3Config,
+      version: flags.version,
     }
 
     if (!s3Config.bucket) this.error('Cannot determine S3 bucket for promotion')
+
     const awsDefaults = {
+      ACL: s3Config.acl ?? ObjectCannedACL.public_read,
       Bucket: s3Config.bucket,
-      ACL: s3Config.acl ?? 'public-read',
-      MetadataDirective: 'REPLACE',
       CacheControl: indexDefaults.maxAge,
+      MetadataDirective: MetadataDirective.REPLACE,
     }
-    const cloudBucketCommitKey = (shortKey: string) => path.join(s3Config.bucket!, commitAWSDir(flags.version, flags.sha, s3Config), shortKey)
+    const cloudBucketCommitKey = (shortKey: string) =>
+      path.join(s3Config.bucket!, commitAWSDir(flags.version, flags.sha, s3Config), shortKey)
     const cloudChannelKey = (shortKey: string) => path.join(channelAWSDir(flags.channel, s3Config), shortKey)
 
     // copy tarballs manifests
-    if (buildConfig.targets.length > 0) this.log(`Promoting buildmanifests & unversioned tarballs to ${flags.channel}`)
-
-    const promoteManifest = async (target: typeof buildConfig.targets[number]) => {
+    const promoteManifest = async (target: (typeof buildConfig.targets)[number]) => {
       const manifest = templateShortKey('manifest', {
         arch: target.arch,
         bin: config.bin,
@@ -66,13 +78,19 @@ export default class Promote extends Command {
           CopySource: cloudBucketCommitKey(manifest),
           Key: cloudChannelKey(unversionedManifest),
         },
+        {
+          dryRun: flags['dry-run'],
+          ignoreMissing: flags['ignore-missing'],
+          namespace: unversionedManifest,
+        },
       )
     }
 
-    const promoteGzTarballs = async (target: typeof buildConfig.targets[number]) => {
-      const versionedTarGzName = templateShortKey('versioned', '.tar.gz', {
+    const promoteGzTarballs = async (target: (typeof buildConfig.targets)[number]) => {
+      const versionedTarGzName = templateShortKey('versioned', {
         arch: target.arch,
         bin: config.bin,
+        ext: '.tar.gz',
         platform: target.platform,
         sha: flags.sha,
         version: flags.version,
@@ -81,19 +99,37 @@ export default class Promote extends Command {
       // strip version & sha so update/scripts can point to a static channel tarball
       const unversionedTarGzName = versionedTarGzName.replace(`-v${flags.version}-${flags.sha}`, '')
       const unversionedTarGzKey = cloudChannelKey(unversionedTarGzName)
-      await Promise.all([aws.s3.copyObject(
-        {
-          ...awsDefaults,
-          CopySource: versionedTarGzKey,
-          Key: unversionedTarGzKey,
-        },
-      )].concat(flags.indexes ? [appendToIndex({...indexDefaults, originalUrl: versionedTarGzKey, filename: unversionedTarGzName})] : []))
+      await Promise.all([
+        aws.s3.copyObject(
+          {
+            ...awsDefaults,
+            CopySource: versionedTarGzKey,
+            Key: unversionedTarGzKey,
+          },
+          {
+            dryRun: flags['dry-run'],
+            ignoreMissing: flags['ignore-missing'],
+            namespace: unversionedTarGzName,
+          },
+        ),
+        ...(flags.indexes
+          ? [
+              appendToIndex({
+                ...indexDefaults,
+                dryRun: flags['dry-run'],
+                filename: unversionedTarGzName,
+                originalUrl: versionedTarGzKey,
+              }),
+            ]
+          : []),
+      ])
     }
 
-    const promoteXzTarballs = async (target: typeof buildConfig.targets[number]) => {
-      const versionedTarXzName = templateShortKey('versioned', '.tar.xz', {
+    const promoteXzTarballs = async (target: (typeof buildConfig.targets)[number]) => {
+      const versionedTarXzName = templateShortKey('versioned', {
         arch: target.arch,
         bin: config.bin,
+        ext: '.tar.xz',
         platform: target.platform,
         sha: flags.sha,
         version: flags.version,
@@ -102,58 +138,120 @@ export default class Promote extends Command {
       // strip version & sha so update/scripts can point to a static channel tarball
       const unversionedTarXzName = versionedTarXzName.replace(`-v${flags.version}-${flags.sha}`, '')
       const unversionedTarXzKey = cloudChannelKey(unversionedTarXzName)
-      await Promise.all([aws.s3.copyObject(
-        {
-          ...awsDefaults,
-          CopySource: versionedTarXzKey,
-          Key: unversionedTarXzKey,
-        },
-      )].concat(flags.indexes ? [appendToIndex({...indexDefaults, originalUrl: versionedTarXzKey, filename: unversionedTarXzName})] : []))
-    }
-
-    const promoteMacInstallers = async () => {
-      this.log(`Promoting macos pkgs to ${flags.channel}`)
-      const arches = _.uniq(buildConfig.targets.filter(t => t.platform === 'darwin').map(t => t.arch))
-      await Promise.all(arches.map(async arch => {
-        const darwinPkg = templateShortKey('macos', {bin: config.bin, version: flags.version, sha: flags.sha, arch})
-        const darwinCopySource = cloudBucketCommitKey(darwinPkg)
-        // strip version & sha so scripts can point to a static channel pkg
-        const unversionedPkg = darwinPkg.replace(`-v${flags.version}-${flags.sha}`, '')
-        await Promise.all([aws.s3.copyObject(
+      await Promise.all([
+        aws.s3.copyObject(
           {
             ...awsDefaults,
-            CopySource: darwinCopySource,
-            Key: cloudChannelKey(unversionedPkg),
-
+            CopySource: versionedTarXzKey,
+            Key: unversionedTarXzKey,
+          },
+          {
+            dryRun: flags['dry-run'],
+            ignoreMissing: flags['ignore-missing'],
+            namespace: unversionedTarXzName,
           },
-        )].concat(flags.indexes ? [appendToIndex({...indexDefaults, originalUrl: darwinCopySource, filename: unversionedPkg})] : []))
-      }))
+        ),
+        ...(flags.indexes
+          ? [
+              appendToIndex({
+                ...indexDefaults,
+                dryRun: flags['dry-run'],
+                filename: unversionedTarXzName,
+                originalUrl: versionedTarXzKey,
+              }),
+            ]
+          : []),
+      ])
+    }
+
+    const promoteMacInstallers = async () => {
+      const arches = uniq(buildConfig.targets.filter((t) => t.platform === 'darwin').map((t) => t.arch))
+      await Promise.all(
+        arches.map(async (arch) => {
+          const darwinPkg = templateShortKey('macos', {arch, bin: config.bin, sha: flags.sha, version: flags.version})
+          const darwinCopySource = cloudBucketCommitKey(darwinPkg)
+          // strip version & sha so scripts can point to a static channel pkg
+          const unversionedPkg = darwinPkg.replace(`-v${flags.version}-${flags.sha}`, '')
+          await Promise.all([
+            aws.s3.copyObject(
+              {
+                ...awsDefaults,
+                CopySource: darwinCopySource,
+                Key: cloudChannelKey(unversionedPkg),
+              },
+              {
+                dryRun: flags['dry-run'],
+                ignoreMissing: flags['ignore-missing'],
+                namespace: unversionedPkg,
+              },
+            ),
+            ...(flags.indexes
+              ? [
+                  appendToIndex({
+                    ...indexDefaults,
+                    dryRun: flags['dry-run'],
+                    filename: unversionedPkg,
+                    originalUrl: darwinCopySource,
+                  }),
+                ]
+              : []),
+          ])
+        }),
+      )
     }
 
     const promoteWindowsInstallers = async () => {
       // copy win exe
-      this.log(`Promoting windows exe to ${flags.channel}`)
-      const arches = buildConfig.targets.filter(t => t.platform === 'win32').map(t => t.arch)
-      await Promise.all(arches.map(async arch => {
-        const winPkg = templateShortKey('win32', {bin: config.bin, version: flags.version, sha: flags.sha, arch})
-        const winCopySource = cloudBucketCommitKey(winPkg)
-        // strip version & sha so scripts can point to a static channel exe
-        const unversionedExe = winPkg.replace(`-v${flags.version}-${flags.sha}`, '')
-        await Promise.all([aws.s3.copyObject(
-          {
-            ...awsDefaults,
-            CopySource: winCopySource,
-            Key: cloudChannelKey(unversionedExe),
-          },
-        )].concat(flags.indexes ? [appendToIndex({...indexDefaults, originalUrl: winCopySource, filename: unversionedExe})] : []))
-        ux.action.stop('successfully')
-      }))
+      const arches = buildConfig.targets.filter((t) => t.platform === 'win32').map((t) => t.arch)
+      await Promise.all(
+        arches.map(async (arch) => {
+          const winPkg = templateShortKey('win32', {arch, bin: config.bin, sha: flags.sha, version: flags.version})
+          const winCopySource = cloudBucketCommitKey(winPkg)
+          // strip version & sha so scripts can point to a static channel exe
+          const unversionedExe = winPkg.replace(`-v${flags.version}-${flags.sha}`, '')
+          await Promise.all([
+            aws.s3.copyObject(
+              {
+                ...awsDefaults,
+                CopySource: winCopySource,
+                Key: cloudChannelKey(unversionedExe),
+              },
+              {
+                dryRun: flags['dry-run'],
+                ignoreMissing: flags['ignore-missing'],
+                namespace: unversionedExe,
+              },
+            ),
+            ...(flags.indexes
+              ? [
+                  appendToIndex({
+                    ...indexDefaults,
+                    dryRun: flags['dry-run'],
+                    filename: unversionedExe,
+                    originalUrl: winCopySource,
+                  }),
+                ]
+              : []),
+          ])
+          ux.action.stop('successfully')
+        }),
+      )
     }
 
     const promoteDebianAptPackages = async () => {
+      const arches = buildConfig.targets.filter((t) => t.platform === 'linux')
+
       // copy debian artifacts
       const debArtifacts = [
-        templateShortKey('deb', {bin: config.bin, versionShaRevision: debVersion(buildConfig), arch: 'amd64' as any}),
+        ...arches
+          .filter((a) => !a.arch.includes('x86')) // See todo below
+          .map((a) =>
+            templateShortKey('deb', {
+              arch: debArch(a.arch),
+              bin: config.bin,
+              versionShaRevision: debVersion(buildConfig),
+            }),
+          ),
         'Packages.gz',
         'Packages.xz',
         'Packages.bz2',
@@ -161,58 +259,56 @@ export default class Promote extends Command {
         'InRelease',
         'Release.gpg',
       ]
-      
-      // start
-      // TODO: remove in next major release
-      // node dropped 32-bit support for linux a long time ago, see:
-      // https://github.com/oclif/oclif/issues/770#issuecomment-1508719530
-      const arches = buildConfig.targets.filter(t => t.platform === 'linux')
-      
-      if (arches.find(a=> a.arch.includes('x86')) && lte(buildConfig.nodeVersion, '9.11.2')) {
-        debArtifacts.push(templateShortKey('deb', {bin: config.bin, versionShaRevision: debVersion(buildConfig), arch: 'i386' as any}))
-      }
-      // end
-
-      this.log(`Promoting debian artifacts to ${flags.channel}`)
-      await Promise.all(debArtifacts.flatMap(artifact => {
-        const debCopySource = cloudBucketCommitKey(`apt/${artifact}`)
-        const debKey = cloudChannelKey(`apt/${artifact}`)
-        // apt expects ../apt/dists/versionName/[artifacts] but oclif wants varsions/sha/apt/[artifacts]
-        // see https://github.com/oclif/oclif/issues/347 for the AWS-redirect that solves this
-        // this workaround puts the code in both places that the redirect was doing
-        // with this, the docs are correct. The copies are all done in parallel so it shouldn't be too costly.
-        const workaroundKey = cloudChannelKey(`apt/./${artifact}`)
-        return [
-          aws.s3.copyObject(
-            {
-              ...awsDefaults,
-              CopySource: debCopySource,
-              Key: debKey,
-            },
-          ),
-          aws.s3.copyObject(
-            {
-              ...awsDefaults,
-              CopySource: debCopySource,
-              Key: workaroundKey,
-            },
-          ),
-        ]
-      }),
 
+      await Promise.all(
+        debArtifacts.flatMap((artifact) => {
+          const debCopySource = cloudBucketCommitKey(`apt/${artifact}`)
+          const debKey = cloudChannelKey(`apt/${artifact}`)
+          // apt expects ../apt/dists/versionName/[artifacts] but oclif wants versions/sha/apt/[artifacts]
+          // see https://github.com/oclif/oclif/issues/347 for the AWS-redirect that solves this
+          // this workaround puts the code in both places that the redirect was doing
+          // with this, the docs are correct. The copies are all done in parallel so it shouldn't be too costly.
+          const workaroundKey = `${cloudChannelKey('apt/')}./${artifact}`
+          return [
+            aws.s3.copyObject(
+              {
+                ...awsDefaults,
+                CopySource: debCopySource,
+                Key: debKey,
+              },
+              {
+                dryRun: flags['dry-run'],
+                ignoreMissing: flags['ignore-missing'],
+                namespace: debKey,
+              },
+            ),
+            aws.s3.copyObject(
+              {
+                ...awsDefaults,
+                CopySource: debCopySource,
+                Key: workaroundKey,
+              },
+              {
+                dryRun: flags['dry-run'],
+                ignoreMissing: flags['ignore-missing'],
+                namespace: workaroundKey,
+              },
+            ),
+          ]
+        }),
       )
     }
 
-    await Promise.all(buildConfig.targets.flatMap(target => [
-      // always promote the manifest and gz
-      promoteManifest(target),
-      promoteGzTarballs(target),
+    await Promise.all([
+      ...buildConfig.targets.flatMap((target) => [
+        // always promote the manifest and gz
+        promoteManifest(target),
+        promoteGzTarballs(target),
+      ]),
+      ...(flags.xz ? buildConfig.targets.map((target) => promoteXzTarballs(target)) : []),
+      ...(flags.macos ? [promoteMacInstallers()] : []),
+      ...(flags.win ? [promoteWindowsInstallers()] : []),
+      ...(flags.deb ? [promoteDebianAptPackages()] : []),
     ])
-    // optionally promote other artifacts depending on the specified flags
-    .concat(flags.xz ? buildConfig.targets.map(target => promoteXzTarballs(target)) : [])
-    .concat(flags.macos ? [promoteMacInstallers()] : [])
-    .concat(flags.win ? [promoteWindowsInstallers()] : [])
-    .concat(flags.deb ? [promoteDebianAptPackages()] : []),
-    )
   }
 }
diff --git a/src/commands/readme.ts b/src/commands/readme.ts
index 1d6e9f172..f856ad6f3 100644
--- a/src/commands/readme.ts
+++ b/src/commands/readme.ts
@@ -1,24 +1,11 @@
-// tslint:disable no-implicit-dependencies
-import {Command, Config, Flags, HelpBase, Interfaces, loadHelpClass, Plugin, toConfiguredId} from '@oclif/core'
+import {Command, Config, Flags, Interfaces, Plugin} from '@oclif/core'
 import * as fs from 'fs-extra'
-import * as _ from 'lodash'
-import * as path from 'path'
-import {URL} from 'url'
+import * as path from 'node:path'
 
-import {castArray, compact, sortBy, template, uniqBy} from '../util'
-import {HelpCompatibilityWrapper} from '../help-compatibility'
-
-const normalize = require('normalize-package-data')
-const columns = Number.parseInt(process.env.COLUMNS!, 10) || 120
-const slugify = new (require('github-slugger') as any)()
-
-interface HelpBaseDerived {
-  new (config: Interfaces.Config, opts?: Partial<Interfaces.HelpOptions>): HelpBase;
-}
+import ReadmeGenerator from '../readme-generator'
 
 export default class Readme extends Command {
-  static description = `adds commands to README.md in current directory
-The readme must have any of the following tags inside of it for it to be replaced or else it will do nothing:
+  static description = `The readme must have any of the following tags inside of it for it to be replaced or else it will do nothing:
 # Usage
 <!-- usage -->
 # Commands
@@ -30,239 +17,100 @@ Customize the code URL prefix by setting oclif.repositoryPrefix in package.json.
 `
 
   static flags = {
-    dir: Flags.string({description: 'output directory for multi docs', default: 'docs', required: true}),
-    multi: Flags.boolean({description: 'create a different markdown page for each topic'}),
-    aliases: Flags.boolean({description: 'include aliases in the command list', allowNo: true, default: true}),
+    aliases: Flags.boolean({
+      allowNo: true,
+      default: true,
+      description: 'Include aliases in the command list.',
+    }),
+    'dry-run': Flags.boolean({
+      description: 'Prints the generated README without modifying the file.',
+    }),
+    multi: Flags.boolean({
+      description: 'Create a different markdown page for each topic.',
+    }),
+    'nested-topics-depth': Flags.integer({
+      dependsOn: ['multi'],
+      description: 'Max nested topics depth for multi markdown page generation. Use with --multi enabled.',
+    }),
+    'output-dir': Flags.string({
+      aliases: ['dir'],
+      default: 'docs',
+      description: 'Output directory for multi docs.',
+      required: true,
+    }),
+    'plugin-directory': Flags.string({
+      description: 'Plugin directory to generate README for. Defaults to the current directory.',
+    }),
+    'readme-path': Flags.string({
+      default: 'README.md',
+      description: 'Path to the README file.',
+      required: true,
+    }),
+    'repository-prefix': Flags.string({
+      description: 'A template string used to build links to the source code.',
+    }),
+    'tsconfig-path': Flags.string({
+      default: 'tsconfig.json',
+      description: 'Path to the tsconfig file',
+    }),
+    version: Flags.string({
+      description: 'Version to use in readme links. Defaults to the version in package.json.',
+    }),
   }
 
-  private HelpClass!: HelpBaseDerived
-
-  async run(): Promise<void> {
-    const {flags} = await this.parse(Readme)
-    const cwd = process.cwd()
-    const readmePath = path.resolve(cwd, 'README.md')
-    const config = await Config.load({root: cwd, devPlugins: false, userPlugins: false})
-
-    try {
-      const p = require.resolve('@oclif/plugin-legacy', {paths: [cwd]})
-      const plugin = new Plugin({root: p, type: 'core'})
-      await plugin.load()
-      config.plugins.push(plugin)
-    } catch {}
-
-    await (config as Config).runHook('init', {id: 'readme', argv: this.argv})
-
-    this.HelpClass = await loadHelpClass(config)
-
-    let readme = await fs.readFile(readmePath, 'utf8')
+  static summary = 'Adds commands to README.md in current directory.'
 
-    let commands = config.commands
-    .filter(c => !c.hidden && c.pluginType === 'core')
-    .filter(c => flags.aliases ? true : !c.aliases.includes(c.id))
-    .map(c => c.id === '.' ? {...c, id: ''} : c)
+  private flags!: Interfaces.InferredFlags<typeof Readme.flags>
 
-    this.debug('commands:', commands.map(c => c.id).length)
-    commands = uniqBy(commands, c => c.id)
-    commands = sortBy(commands, c => c.id)
-    readme = this.replaceTag(readme, 'usage', this.usage(config))
-    readme = this.replaceTag(readme, 'commands', flags.multi ? this.multiCommands(config, commands, flags.dir) : this.commands(config, commands))
-    readme = this.replaceTag(readme, 'toc', this.toc(config, readme))
-
-    readme = readme.trimEnd()
-    readme += '\n'
-
-    await fs.outputFile(readmePath, readme)
-  }
-
-  replaceTag(readme: string, tag: string, body: string): string {
-    if (readme.includes(`<!-- ${tag} -->`)) {
-      if (readme.includes(`<!-- ${tag}stop -->`)) {
-        readme = readme.replace(new RegExp(`<!-- ${tag} -->(.|\n)*<!-- ${tag}stop -->`, 'm'), `<!-- ${tag} -->`)
+  async run(): Promise<string> {
+    const {flags} = await this.parse(Readme)
+    this.flags = flags
+    this.flags['plugin-directory'] ??= process.cwd()
+    const readmePath = path.resolve(this.flags['plugin-directory'], flags['readme-path'])
+    const tsConfigPath = path.resolve(this.flags['plugin-directory'], flags['tsconfig-path'])
+    if (await fs.pathExists(tsConfigPath)) {
+      const {default: JSONC} = await import('tiny-jsonc')
+      const tsConfigRaw = await fs.readFile(tsConfigPath, 'utf8')
+      const tsConfig = JSONC.parse(tsConfigRaw)
+      const outDir = tsConfig.compilerOptions?.outDir ?? 'lib'
+
+      if (!(await fs.pathExists(outDir))) {
+        this.warn(`No compiled source found at ${outDir}. Some commands may be missing.`)
       }
-
-      this.log(`replacing <!-- ${tag} --> in README.md`)
-    }
-
-    return readme.replace(`<!-- ${tag} -->`, `<!-- ${tag} -->\n${body}\n<!-- ${tag}stop -->`)
-  }
-
-  toc(__: Interfaces.Config, readme: string): string {
-    return readme.split('\n').filter(l => l.startsWith('# '))
-    .map(l => l.trim().slice(2))
-    .map(l => `* [${l}](#${slugify.slug(l)})`)
-    .join('\n')
-  }
-
-  usage(config: Interfaces.Config): string {
-    const versionFlags = ['--version', ...(config.pjson.oclif.additionalVersionFlags ?? []).sort()]
-    const versionFlagsString = `(${versionFlags.join('|')})`
-    return [
-      `\`\`\`sh-session
-$ npm install -g ${config.name}
-$ ${config.bin} COMMAND
-running command...
-$ ${config.bin} ${versionFlagsString}
-${config.name}/${process.env.OCLIF_NEXT_VERSION || config.version} ${process.platform}-${process.arch} node-v${process.versions.node}
-$ ${config.bin} --help [COMMAND]
-USAGE
-  $ ${config.bin} COMMAND
-...
-\`\`\`\n`,
-    ].join('\n').trim()
-  }
-
-  multiCommands(config: Interfaces.Config, commands: Command.Cached[], dir: string): string {
-    let topics = config.topics
-    topics = topics.filter(t => !t.hidden && !t.name.includes(':'))
-    topics = topics.filter(t => commands.find(c => c.id.startsWith(t.name)))
-    topics = sortBy(topics, t => t.name)
-    topics = uniqBy(topics, t => t.name)
-    for (const topic of topics) {
-      this.createTopicFile(
-        path.join('.', dir, topic.name.replace(/:/g, '/') + '.md'),
-        config,
-        topic,
-        commands.filter(c => c.id === topic.name || c.id.startsWith(topic.name + ':')),
-      )
     }
 
-    return [
-      '# Command Topics\n',
-      ...topics.map(t => {
-        return compact([
-          `* [\`${config.bin} ${t.name}\`](${dir}/${t.name.replace(/:/g, '/')}.md)`,
-          template({config})(t.description || '').trim().split('\n')[0],
-        ]).join(' - ')
-      }),
-    ].join('\n').trim() + '\n'
-  }
-
-  createTopicFile(file: string, config: Interfaces.Config, topic: Interfaces.Topic, commands: Command.Cached[]): void {
-    const bin = `\`${config.bin} ${topic.name}\``
-    const doc = [
-      bin,
-      '='.repeat(bin.length),
-      '',
-      template({config})(topic.description || '').trim(),
-      '',
-      this.commands(config, commands),
-    ].join('\n').trim() + '\n'
-    fs.outputFileSync(file, doc)
-  }
-
-  commands(config: Interfaces.Config, commands: Command.Cached[]): string {
-    return [
-      ...commands.map(c => {
-        const usage = this.commandUsage(config, c)
-        return usage ? `* [\`${config.bin} ${usage}\`](#${slugify.slug(`${config.bin}-${usage}`)})` : `* [\`${config.bin}\`](#${slugify.slug(`${config.bin}`)})`
-      }),
-      '',
-      ...commands.map(c => this.renderCommand(config, c)).map(s => s.trim() + '\n'),
-    ].join('\n').trim()
-  }
-
-  renderCommand(config: Interfaces.Config, c: Command.Cached): string {
-    this.debug('rendering command', c.id)
-    const title = template({config, command: c})(c.summary || c.description || '').trim().split('\n')[0]
-    const help = new this.HelpClass(config, {stripAnsi: true, maxWidth: columns})
-    const wrapper = new HelpCompatibilityWrapper(help)
-
-    const header = () => {
-      const usage = this.commandUsage(config, c)
-      return usage ? `## \`${config.bin} ${usage}\`` : `## \`${config.bin}\``
-    }
+    const config = await Config.load({
+      devPlugins: false,
+      root: this.flags['plugin-directory'],
+      userPlugins: false,
+    })
 
     try {
-      return compact([
-        header(),
-        title,
-        '```\n' + wrapper.formatCommand(c).trim() + '\n```',
-        this.commandCode(config, c),
-      ]).join('\n\n')
-    } catch (error: any) {
-      this.error(error.message)
-    }
-  }
-
-  commandCode(config: Interfaces.Config, c: Command.Cached): string | undefined {
-    const pluginName = c.pluginName
-    if (!pluginName) return
-    const plugin = config.plugins.find(p => p.name === c.pluginName)
-    if (!plugin) return
-    const repo = this.repo(plugin)
-    if (!repo) return
-    let label = plugin.name
-    let version = plugin.version
-    const commandPath = this.commandPath(plugin, c)
-    if (!commandPath) return
-    if (config.name === plugin.name) {
-      label = commandPath
-      version = process.env.OCLIF_NEXT_VERSION || version
-    }
-
-    const template = plugin.pjson.oclif.repositoryPrefix || '<%- repo %>/blob/v<%- version %>/<%- commandPath %>'
-    return `_See code: [${label}](${_.template(template)({repo, version, commandPath, config, c})})_`
-  }
-
-  private repo(plugin: Interfaces.Plugin): string | undefined {
-    const pjson = {...plugin.pjson}
-    normalize(pjson)
-    const repo = pjson.repository && pjson.repository.url
-    if (!repo) return
-    const url = new URL(repo)
-    if (!['github.com', 'gitlab.com'].includes(url.hostname) && !pjson.oclif.repositoryPrefix) return
-    return `https://${url.hostname}${url.pathname.replace(/\.git$/, '')}`
-  }
-
-  // eslint-disable-next-line valid-jsdoc
-  /**
-   * fetches the path to a command
-   */
-  private commandPath(plugin: Interfaces.Plugin, c: Command.Cached): string | undefined {
-    const commandsDir = plugin.pjson.oclif.commands
-    if (!commandsDir) return
-    let p = path.join(plugin.root, commandsDir, ...c.id.split(':'))
-    const libRegex = new RegExp('^lib' + (path.sep === '\\' ? '\\\\' : path.sep))
-    if (fs.pathExistsSync(path.join(p, 'index.js'))) {
-      p = path.join(p, 'index.js')
-    } else if (fs.pathExistsSync(p + '.js')) {
-      p += '.js'
-    } else if (plugin.pjson.devDependencies && plugin.pjson.devDependencies.typescript) {
-      // check if non-compiled scripts are available
-      const base = p.replace(plugin.root + path.sep, '')
-      p = path.join(plugin.root, base.replace(libRegex, 'src' + path.sep))
-      if (fs.pathExistsSync(path.join(p, 'index.ts'))) {
-        p = path.join(p, 'index.ts')
-      } else if (fs.pathExistsSync(p + '.ts')) {
-        p += '.ts'
-      } else return
-    } else return
-    p = p.replace(plugin.root + path.sep, '')
-    if (plugin.pjson.devDependencies && plugin.pjson.devDependencies.typescript) {
-      p = p.replace(libRegex, 'src' + path.sep)
-      p = p.replace(/\.js$/, '.ts')
-    }
-
-    p = p.replace(/\\/g, '/') // Replace windows '\' by '/'
-    return p
-  }
-
-  private commandUsage(config: Interfaces.Config, command: Command.Cached): string {
-    const arg = (arg: Command.Arg.Cached) => {
-      const name = arg.name.toUpperCase()
-      if (arg.required) return `${name}`
-      return `[${name}]`
-    }
+      const p = require.resolve('@oclif/plugin-legacy', {paths: [this.flags['plugin-directory']]})
+      const plugin = new Plugin({root: p, type: 'core'})
+      await plugin.load()
+      config.plugins.set(plugin.name, plugin)
+    } catch {}
 
-    const id = toConfiguredId(command.id, config)
-    const defaultUsage = () => {
-      return compact([
-        id,
-        Object.values(command.args).filter(a => !a.hidden).map(a => arg(a)).join(' '),
-      ]).join(' ')
+    await config.runHook('init', {argv: this.argv, id: 'readme'})
+
+    const generator = new ReadmeGenerator(config, {
+      aliases: this.flags.aliases,
+      dryRun: this.flags['dry-run'],
+      multi: this.flags.multi,
+      nestedTopicsDepth: this.flags['nested-topics-depth'],
+      outputDir: this.flags['output-dir'],
+      pluginDir: this.flags['plugin-directory'],
+      readmePath,
+      repositoryPrefix: this.flags['repository-prefix'],
+      version: this.flags.version,
+    })
+
+    const readme = await generator.generate()
+    if (this.flags['dry-run']) {
+      this.log(readme)
     }
 
-    const usages = castArray(command.usage)
-    return template({config, command})(usages.length === 0 ? defaultUsage() : usages[0])
+    return readme
   }
 }
diff --git a/src/commands/upload/deb.ts b/src/commands/upload/deb.ts
index 888a1015e..b7a50b9ed 100644
--- a/src/commands/upload/deb.ts
+++ b/src/commands/upload/deb.ts
@@ -1,36 +1,45 @@
 import {Command, Flags} from '@oclif/core'
-import * as fs from 'fs'
-import * as path from 'path'
+import * as fs from 'node:fs'
+import * as path from 'node:path'
+
 import aws from '../../aws'
 import {log} from '../../log'
 import * as Tarballs from '../../tarballs'
-import {commitAWSDir, templateShortKey, debVersion} from '../../upload-util'
+import {DebArch, commitAWSDir, debArch, debVersion, templateShortKey} from '../../upload-util'
 
 export default class UploadDeb extends Command {
-  static description = 'upload deb package built with pack:deb'
+  static description = 'Upload deb package built with `pack deb`.'
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}),
+    'dry-run': Flags.boolean({description: 'Run the command without uploading to S3.'}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true}),
   }
 
   async run(): Promise<void> {
     const {flags} = await this.parse(UploadDeb)
     const buildConfig = await Tarballs.buildConfig(flags.root)
-    const {s3Config, config} = buildConfig
+    const {config, s3Config} = buildConfig
     const dist = (f: string) => buildConfig.dist(path.join('deb', f))
     const S3Options = {
-      Bucket: s3Config.bucket!,
       ACL: s3Config.acl || 'public-read',
+      Bucket: s3Config.bucket!,
     }
 
-    if (!fs.existsSync(dist('Release'))) this.error('Cannot find debian artifacts', {
-      suggestions: ['Run "oclif pack deb" before uploading'],
-    })
+    if (!fs.existsSync(dist('Release')))
+      this.error('Cannot find debian artifacts', {
+        suggestions: ['Run "oclif pack deb" before uploading'],
+      })
 
     const cloudKeyBase = commitAWSDir(config.pjson.version, buildConfig.gitSha, s3Config)
     const upload = (file: string) => {
       const cloudKey = `${cloudKeyBase}/apt/${file}`
-      return aws.s3.uploadFile(dist(file), {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey})
+      return aws.s3.uploadFile(
+        dist(file),
+        {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey},
+        {
+          dryRun: flags['dry-run'],
+        },
+      )
     }
 
     // apt expects ../apt/dists/versionName/[artifacts] but oclif wants versions/sha/apt/[artifacts]
@@ -39,19 +48,29 @@ export default class UploadDeb extends Command {
     // with this, the docs are correct. The copies are all done in parallel so it shouldn't be too costly.
     const uploadWorkaround = (file: string) => {
       const cloudKey = `${cloudKeyBase}/apt/./${file}`
-      return aws.s3.uploadFile(dist(file), {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey})
+      return aws.s3.uploadFile(
+        dist(file),
+        {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey},
+        {
+          dryRun: flags['dry-run'],
+        },
+      )
     }
 
-    const uploadDeb = async (arch: 'amd64' | 'i386') => {
-      const deb = templateShortKey('deb', {bin: config.bin, versionShaRevision: debVersion(buildConfig), arch: arch as any})
+    const uploadDeb = async (arch: DebArch) => {
+      const deb = templateShortKey('deb', {
+        arch,
+        bin: config.bin,
+        versionShaRevision: debVersion(buildConfig),
+      })
       if (fs.existsSync(dist(deb))) await Promise.all([upload(deb), uploadWorkaround(deb)])
     }
 
     log(`starting upload of deb artifacts for v${config.version}-${buildConfig.gitSha}`)
+    const arches = buildConfig.targets.filter((t) => t.platform === 'linux')
 
     await Promise.all([
-      uploadDeb('amd64'),
-      uploadDeb('i386'),
+      ...arches.map((a) => uploadDeb(debArch(a.arch))),
       upload('Packages.gz'),
       upload('Packages.xz'),
       upload('Packages.bz2'),
@@ -60,10 +79,9 @@ export default class UploadDeb extends Command {
       uploadWorkaround('Packages.xz'),
       uploadWorkaround('Packages.bz2'),
       uploadWorkaround('Release'),
-    ].concat(
-      fs.existsSync(dist('InRelease')) ? [upload('InRelease'), uploadWorkaround('InRelease')] : [],
-      fs.existsSync(dist('Release.gpg')) ? [upload('Release.gpg'), uploadWorkaround('Release.gpg')] : [],
-    ))
+      ...(fs.existsSync(dist('InRelease')) ? [upload('InRelease'), uploadWorkaround('InRelease')] : []),
+      ...(fs.existsSync(dist('Release.gpg')) ? [upload('Release.gpg'), uploadWorkaround('Release.gpg')] : []),
+    ])
     log(`done uploading deb artifacts for v${config.version}-${buildConfig.gitSha}`)
   }
 }
diff --git a/src/commands/upload/macos.ts b/src/commands/upload/macos.ts
index 447df59bf..b89efa09e 100644
--- a/src/commands/upload/macos.ts
+++ b/src/commands/upload/macos.ts
@@ -1,45 +1,60 @@
-import * as _ from 'lodash'
-import * as fs from 'fs'
 import {Command, Flags, Interfaces} from '@oclif/core'
+import * as fs from 'node:fs'
 
 import aws from '../../aws'
 import {log} from '../../log'
 import * as Tarballs from '../../tarballs'
 import {commitAWSDir, templateShortKey} from '../../upload-util'
+import {uniq} from '../../util'
 
 export default class UploadMacos extends Command {
-  static description = 'upload macos installers built with pack:macos'
+  static description = 'Upload macos installers built with `pack macos`.'
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}),
-    targets: Flags.string({char: 't', description: 'comma-separated targets to upload (e.g.: darwin-x64,darwin-arm64)'}),
+    'dry-run': Flags.boolean({description: 'Run the command without uploading to S3.'}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true}),
+    targets: Flags.string({
+      char: 't',
+      description: 'Comma-separated targets to upload (e.g.: darwin-x64,darwin-arm64).',
+    }),
   }
 
   async run(): Promise<void> {
     const {flags} = await this.parse(UploadMacos)
     const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(',')})
-    const {s3Config, config, dist} = buildConfig
+    const {config, dist, s3Config} = buildConfig
     const S3Options = {
-      Bucket: s3Config.bucket!,
       ACL: s3Config.acl || 'public-read',
+      Bucket: s3Config.bucket!,
     }
     const cloudKeyBase = commitAWSDir(config.version, buildConfig.gitSha, s3Config)
 
     const upload = async (arch: Interfaces.ArchTypes) => {
-      const templateKey = templateShortKey('macos', {bin: config.bin, version: config.version, sha: buildConfig.gitSha, arch})
+      const templateKey = templateShortKey('macos', {
+        arch,
+        bin: config.bin,
+        sha: buildConfig.gitSha,
+        version: config.version,
+      })
       const cloudKey = `${cloudKeyBase}/${templateKey}`
       const localPkg = dist(`macos/${templateKey}`)
 
-      if (fs.existsSync(localPkg)) await aws.s3.uploadFile(localPkg, {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey})
-      else this.error('Cannot find macOS pkg', {
-        suggestions: ['Run "oclif pack macos" before uploading'],
-      })
+      if (fs.existsSync(localPkg))
+        await aws.s3.uploadFile(
+          localPkg,
+          {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey},
+          {
+            dryRun: flags['dry-run'],
+          },
+        )
+      else
+        this.error('Cannot find macOS pkg', {
+          suggestions: ['Run "oclif pack macos" before uploading'],
+        })
     }
 
-    const arches = _.uniq(buildConfig.targets
-    .filter(t => t.platform === 'darwin')
-    .map(t => t.arch))
-    await Promise.all(arches.map(a => upload(a)))
+    const arches = uniq(buildConfig.targets.filter((t) => t.platform === 'darwin').map((t) => t.arch))
+    await Promise.all(arches.map((a) => upload(a)))
 
     log(`done uploading macos pkgs for v${config.version}-${buildConfig.gitSha}`)
   }
diff --git a/src/commands/upload/tarballs.ts b/src/commands/upload/tarballs.ts
index 44add7afa..9e2e20ab7 100644
--- a/src/commands/upload/tarballs.ts
+++ b/src/commands/upload/tarballs.ts
@@ -1,44 +1,51 @@
-import {Command, Flags} from '@oclif/core'
-import {Interfaces} from '@oclif/core'
-import * as fs from 'fs'
+import {Command, Flags, Interfaces, ux} from '@oclif/core'
+import * as fs from 'node:fs'
+
 import aws from '../../aws'
 import {log} from '../../log'
 import * as Tarballs from '../../tarballs'
 import {commitAWSDir, templateShortKey} from '../../upload-util'
 
 export default class UploadTarballs extends Command {
-  static description = `upload an oclif CLI to S3
-
-"aws-sdk" will need to be installed as a devDependency to upload.
-`
+  static description = 'Upload an oclif CLI to S3.'
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}),
-    targets: Flags.string({char: 't', description: 'comma-separated targets to upload (e.g.: linux-arm,win32-x64)'}),
-    xz: Flags.boolean({description: 'also upload xz', allowNo: true}),
+    'dry-run': Flags.boolean({description: 'Run the command without uploading to S3.'}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true}),
+    targets: Flags.string({char: 't', description: 'Comma-separated targets to upload (e.g.: linux-arm,win32-x64).'}),
+    xz: Flags.boolean({allowNo: true, description: 'Also upload xz.'}),
   }
 
   async run(): Promise<void> {
     const {flags} = await this.parse(UploadTarballs)
     if (process.platform === 'win32') throw new Error('upload does not function on windows')
-    const buildConfig = await Tarballs.buildConfig(flags.root, {xz: flags.xz, targets: flags?.targets?.split(',')})
-    const {s3Config, dist, config, xz} = buildConfig
+    const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(','), xz: flags.xz})
+    const {config, dist, s3Config, xz} = buildConfig
 
     // fail early if targets are not built
     for (const target of buildConfig.targets) {
-      const tarball = dist(templateShortKey('versioned', {ext: '.tar.gz', bin: config.bin, version: config.version, sha: buildConfig.gitSha, ...target}))
-      if (!fs.existsSync(tarball)) this.error(`Cannot find a tarball ${tarball} for ${target.platform}-${target.arch}`, {
-        suggestions: [`Run "oclif pack --target ${target.platform}-${target.arch}" before uploading`],
-      })
+      const tarball = dist(
+        templateShortKey('versioned', {
+          bin: config.bin,
+          ext: '.tar.gz',
+          sha: buildConfig.gitSha,
+          version: config.version,
+          ...target,
+        }),
+      )
+      if (!fs.existsSync(tarball))
+        this.error(`Cannot find a tarball ${tarball} for ${target.platform}-${target.arch}`, {
+          suggestions: [`Run "oclif pack --target ${target.platform}-${target.arch}" before uploading`],
+        })
     }
 
     const S3Options = {
-      Bucket: s3Config.bucket!,
       ACL: s3Config.acl || 'public-read',
+      Bucket: s3Config.bucket!,
     }
 
-    const uploadTarball = async (options?: { platform: Interfaces.PlatformTypes; arch: Interfaces.ArchTypes}) => {
-      const shortKeyInputs =  {
+    const uploadTarball = async (options?: {arch: Interfaces.ArchTypes; platform: Interfaces.PlatformTypes}) => {
+      const shortKeyInputs = {
         // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
         arch: options?.arch!,
         bin: config.bin,
@@ -49,19 +56,53 @@ export default class UploadTarballs extends Command {
       }
 
       const releaseTarballs = async (ext: '.tar.gz' | '.tar.xz') => {
-        const localKey = templateShortKey('versioned', ext, shortKeyInputs)
+        const localKey = templateShortKey('versioned', {...shortKeyInputs, ext})
         const cloudKey = `${commitAWSDir(config.version, buildConfig.gitSha, s3Config)}/${localKey}`
-        await aws.s3.uploadFile(dist(localKey), {...S3Options, CacheControl: 'max-age=604800', ContentType: 'application/gzip', Key: cloudKey})
+        await aws.s3.uploadFile(
+          dist(localKey),
+          {
+            ...S3Options,
+            CacheControl: 'max-age=604800',
+            ContentType: 'application/gzip',
+            Key: cloudKey,
+          },
+          {
+            dryRun: flags['dry-run'],
+          },
+        )
       }
 
-      const manifest = templateShortKey('manifest', shortKeyInputs)
-      const cloudKey = `${commitAWSDir(config.version, buildConfig.gitSha, s3Config)}/${manifest}`
+      const maybeUploadManifest = async () => {
+        const manifest = templateShortKey('manifest', shortKeyInputs)
+        const cloudKey = `${commitAWSDir(config.version, buildConfig.gitSha, s3Config)}/${manifest}`
+        const local = dist(manifest)
+        if (fs.existsSync(local)) {
+          return aws.s3.uploadFile(
+            dist(manifest),
+            {
+              ...S3Options,
+              CacheControl: 'max-age=86400',
+              ContentType: 'application/json',
+              Key: cloudKey,
+            },
+            {
+              dryRun: flags['dry-run'],
+            },
+          )
+        }
+
+        ux.warn(`Cannot find buildmanifest ${local}. CLI will not be able to update itself.`)
+      }
 
-      await Promise.all([releaseTarballs('.tar.gz'),  aws.s3.uploadFile(dist(manifest), {...S3Options, CacheControl: 'max-age=86400', ContentType: 'application/json', Key: cloudKey})].concat(xz ? [releaseTarballs('.tar.xz')] : []))
+      await Promise.all([
+        releaseTarballs('.tar.gz'),
+        maybeUploadManifest(),
+        ...(xz ? [releaseTarballs('.tar.xz')] : []),
+      ])
     }
 
     if (buildConfig.targets.length > 0) log('uploading targets')
-    await Promise.all(buildConfig.targets.map(t => uploadTarball(t)))
+    await Promise.all(buildConfig.targets.map((t) => uploadTarball(t)))
     log(`done uploading tarballs & manifests for v${config.version}-${buildConfig.gitSha}`)
   }
 }
diff --git a/src/commands/upload/win.ts b/src/commands/upload/win.ts
index db1c972b0..d98d26dff 100644
--- a/src/commands/upload/win.ts
+++ b/src/commands/upload/win.ts
@@ -1,45 +1,66 @@
 import {Command, Flags} from '@oclif/core'
-import * as fs from 'fs'
+import * as fs from 'node:fs'
+
 import aws from '../../aws'
 import {log} from '../../log'
 import * as Tarballs from '../../tarballs'
 import {commitAWSDir, templateShortKey} from '../../upload-util'
 
 export default class UploadWin extends Command {
-  static description = 'upload windows installers built with pack:win'
+  static description = 'Upload windows installers built with `pack win`.'
 
   static flags = {
-    root: Flags.string({char: 'r', description: 'path to oclif CLI root', default: '.', required: true}),
+    'dry-run': Flags.boolean({description: 'Run the command without uploading to S3.'}),
+    root: Flags.string({char: 'r', default: '.', description: 'Path to oclif CLI root.', required: true}),
+    targets: Flags.string({description: 'Comma-separated targets to pack (e.g.: win32-x64,win32-x86,win32-arm64).'}),
   }
 
   async run(): Promise<void> {
     const {flags} = await this.parse(UploadWin)
-    const buildConfig = await Tarballs.buildConfig(flags.root)
-    const {s3Config, config, dist} = buildConfig
+    const buildConfig = await Tarballs.buildConfig(flags.root, {targets: flags?.targets?.split(',')})
+    const {config, dist, s3Config} = buildConfig
     const S3Options = {
-      Bucket: s3Config.bucket!,
       ACL: s3Config.acl || 'public-read',
+      Bucket: s3Config.bucket!,
     }
 
-    const archs = buildConfig.targets.filter(t => t.platform === 'win32').map(t => t.arch)
+    const archs = buildConfig.targets.filter((t) => t.platform === 'win32').map((t) => t.arch)
 
     for (const arch of archs) {
-      const templateKey = templateShortKey('win32', {bin: config.bin, version: config.version, sha: buildConfig.gitSha, arch})
-      const localKey = dist(`win32/${templateKey}`)
-      if (!fs.existsSync(localKey)) this.error(`Cannot find Windows exe for ${arch}`, {
-        suggestions: ['Run "oclif pack win" before uploading'],
+      const templateKey = templateShortKey('win32', {
+        arch,
+        bin: config.bin,
+        sha: buildConfig.gitSha,
+        version: config.version,
       })
+      const localKey = dist(`win32/${templateKey}`)
+      if (!fs.existsSync(localKey))
+        this.error(`Cannot find Windows exe for ${arch}`, {
+          suggestions: ['Run "oclif pack win" before uploading'],
+        })
     }
 
     const cloudKeyBase = commitAWSDir(config.pjson.version, buildConfig.gitSha, s3Config)
-    const uploadWin = async (arch: 'x64' | 'x86') => {
-      const templateKey = templateShortKey('win32', {bin: config.bin, version: config.version, sha: buildConfig.gitSha, arch})
+    const uploadWin = async (arch: 'arm64' | 'x64' | 'x86') => {
+      const templateKey = templateShortKey('win32', {
+        arch,
+        bin: config.bin,
+        sha: buildConfig.gitSha,
+        version: config.version,
+      })
       const localExe = dist(`win32/${templateKey}`)
       const cloudKey = `${cloudKeyBase}/${templateKey}`
-      if (fs.existsSync(localExe)) await aws.s3.uploadFile(localExe, {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey})
+      if (fs.existsSync(localExe))
+        await aws.s3.uploadFile(
+          localExe,
+          {...S3Options, CacheControl: 'max-age=86400', Key: cloudKey},
+          {
+            dryRun: flags['dry-run'],
+          },
+        )
     }
 
-    await Promise.all([uploadWin('x64'), uploadWin('x86')])
+    await Promise.all([uploadWin('x64'), uploadWin('x86'), uploadWin('arm64')])
 
     log(`done uploading windows executables for v${config.version}-${buildConfig.gitSha}`)
   }
diff --git a/src/generator.ts b/src/generator.ts
new file mode 100644
index 000000000..d77d5cd43
--- /dev/null
+++ b/src/generator.ts
@@ -0,0 +1,236 @@
+import {Args, Command, Flags, Interfaces, ux} from '@oclif/core'
+import chalk from 'chalk'
+import {renderFile} from 'ejs'
+import {outputFile} from 'fs-extra'
+import {ExecOptions, exec as cpExec} from 'node:child_process'
+import {existsSync} from 'node:fs'
+import {readFile} from 'node:fs/promises'
+import {join, relative} from 'node:path'
+
+import {debug as Debug} from './log'
+
+const debug = Debug.new(`generator`)
+
+export type FlaggablePrompt = {
+  message: string
+  options?: readonly string[] | string[]
+  validate: (d: string) => boolean | string
+}
+
+export type FlagsOfPrompts<T extends Record<string, FlaggablePrompt>> = Record<
+  keyof T,
+  Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>
+>
+
+export type Flags<T extends typeof Command> = Interfaces.InferredFlags<
+  (typeof GeneratorCommand)['baseFlags'] & T['flags']
+>
+export type Args<T extends typeof Command> = Interfaces.InferredArgs<T['args']>
+
+export type GetFlagOrPromptOptions = {
+  /**
+   * The default value for the prompt if the `--yes` flag is provided.
+   */
+  defaultValue: string
+  /**
+   * A function that returns a value if the user has not provided the value via the flag. This will rerun before
+   * the check for the `--yes` flag.
+   */
+  maybeOtherValue?: () => Promise<string | undefined>
+  /**
+   * The name of the flaggable prompt. Corresponds to the key in `this.flags`.
+   */
+  name: string
+  /**
+   * The type of prompt to display.
+   */
+  type: 'input' | 'select'
+}
+
+export async function exec(
+  command: string,
+  opts?: {silent?: boolean} & ExecOptions,
+): Promise<{stderr: string; stdout: string}> {
+  const silent = opts ? opts.silent : true
+  return new Promise((resolve, reject) => {
+    if (!silent) ux.stdout(chalk.dim(command))
+    const p = cpExec(command, opts ?? {}, (err, stdout, stderr) => {
+      if (err) return reject(err)
+      resolve({stderr, stdout})
+    })
+
+    if (!silent) p.stdout?.pipe(process.stdout)
+    if (!silent) p.stderr?.pipe(process.stderr)
+  })
+}
+
+export async function readPJSON(
+  location: string,
+): Promise<({scripts: Record<string, string>} & Interfaces.PJSON) | undefined> {
+  try {
+    const packageJSON = await readFile(join(location, 'package.json'), 'utf8')
+    return JSON.parse(packageJSON)
+  } catch {}
+}
+
+function validateInput(input: string, validate: (input: string) => boolean | string): never | string {
+  const result = validate(input)
+  if (typeof result === 'string') throw new Error(result)
+  return input
+}
+
+export function makeFlags<T extends Record<string, FlaggablePrompt>>(flaggablePrompts: T): FlagsOfPrompts<T> {
+  return Object.fromEntries(
+    Object.entries(flaggablePrompts).map(([key, value]) => [
+      key,
+      Flags.string({
+        description: `Supply answer for prompt: ${value.message}`,
+        options: value.options,
+        async parse(input) {
+          return validateInput(input, value.validate)
+        },
+      }),
+    ]),
+  ) as FlagsOfPrompts<T>
+}
+
+export abstract class GeneratorCommand<T extends typeof Command> extends Command {
+  protected args!: Args<T>
+  protected flaggablePrompts!: Record<string, FlaggablePrompt>
+
+  protected flags!: Flags<T>
+  public templatesDir!: string
+
+  /**
+   * Get a flag value or prompt the user for a value.
+   *
+   * Resolution order:
+   * - Flag value provided by the user
+   * - Value returned by `maybeOtherValue`
+   * - `defaultValue` if the `--yes` flag is provided
+   * - Prompt the user for a value
+   */
+  public async getFlagOrPrompt({defaultValue, maybeOtherValue, name, type}: GetFlagOrPromptOptions): Promise<string> {
+    if (!this.flaggablePrompts) throw new Error('No flaggable prompts defined')
+    if (!this.flaggablePrompts[name]) throw new Error(`No flaggable prompt defined for ${name}`)
+
+    const maybeFlag = () => {
+      if (this.flags[name]) {
+        this.log(
+          `${chalk.green('?')} ${chalk.bold(this.flaggablePrompts[name].message)} ${chalk.cyan(this.flags[name])}`,
+        )
+        return this.flags[name]
+      }
+    }
+
+    const maybeDefault = () => {
+      if (this.flags.yes) {
+        this.log(`${chalk.green('?')} ${chalk.bold(this.flaggablePrompts[name].message)} ${chalk.cyan(defaultValue)}`)
+        return defaultValue
+      }
+    }
+
+    const checkMaybeOtherValue = async () => {
+      if (!maybeOtherValue) return
+      const otherValue = await maybeOtherValue()
+      if (otherValue) {
+        this.log(`${chalk.green('?')} ${chalk.bold(this.flaggablePrompts[name].message)} ${chalk.cyan(otherValue)}`)
+        return otherValue
+      }
+    }
+
+    switch (type) {
+      case 'select': {
+        return (
+          maybeFlag() ??
+          (await checkMaybeOtherValue()) ??
+          maybeDefault() ??
+          // Dynamic import because @inquirer/select is ESM only. Once oclif is ESM, we can make this a normal import
+          // so that we can avoid importing on every single question.
+          (await import('@inquirer/select')).default({
+            choices: (this.flaggablePrompts[name].options ?? []).map((o) => ({name: o, value: o})),
+            default: defaultValue,
+            message: this.flaggablePrompts[name].message,
+          })
+        )
+      }
+
+      case 'input': {
+        return (
+          maybeFlag() ??
+          (await checkMaybeOtherValue()) ??
+          maybeDefault() ??
+          // Dynamic import because @inquirer/input is ESM only. Once oclif is ESM, we can make this a normal import
+          // so that we can avoid importing on every single question.
+          (await import('@inquirer/input')).default({
+            default: defaultValue,
+            message: this.flaggablePrompts[name].message,
+            validate: this.flaggablePrompts[name].validate,
+          })
+        )
+      }
+
+      default: {
+        throw new Error('Invalid type')
+      }
+    }
+  }
+
+  public async init(): Promise<void> {
+    await super.init()
+    const {args, flags} = await this.parse({
+      args: this.ctor.args,
+      baseFlags: (super.ctor as typeof GeneratorCommand).baseFlags,
+      enableJsonFlag: this.ctor.enableJsonFlag,
+      flags: this.ctor.flags,
+      strict: this.ctor.strict,
+    })
+    this.flags = flags as Flags<T>
+    this.args = args as Args<T>
+    // @ts-expect-error because we trust that child classes will set this - also, it's okay if they don't
+    this.flaggablePrompts = this.ctor.flaggablePrompts ?? {}
+    this.templatesDir = join(__dirname, '../templates')
+    debug(`Templates directory: ${this.templatesDir}`)
+  }
+
+  public async template(source: string, destination: string, data?: Record<string, unknown>): Promise<void> {
+    if (this.flags['dry-run']) {
+      debug('[DRY RUN] Rendering template %s to %s', source, destination)
+    } else {
+      debug('Rendering template %s to %s', source, destination)
+    }
+
+    const rendered = await new Promise<string>((resolve, reject) => {
+      renderFile(source, data ?? {}, (err, str) => {
+        if (err) reject(err)
+        return resolve(str)
+      })
+    })
+
+    let verb = 'Creating'
+    if (rendered) {
+      const relativePath = relative(process.cwd(), destination)
+      if (existsSync(destination)) {
+        const confirmation =
+          this.flags.force ??
+          (await (
+            await import('@inquirer/confirm')
+          ).default({
+            message: `Overwrite ${relativePath}?`,
+          }))
+
+        if (confirmation) {
+          verb = 'Overwriting'
+        } else {
+          this.log(`${chalk.yellow('Skipping')} ${relativePath}`)
+          return
+        }
+      }
+
+      this.log(`${chalk.yellow(verb)} ${relativePath}`)
+      if (!this.flags['dry-run']) {
+        await outputFile(destination, rendered)
+      }
+    }
+  }
+}
diff --git a/src/generators/cli.ts b/src/generators/cli.ts
deleted file mode 100644
index a8ca377f7..000000000
--- a/src/generators/cli.ts
+++ /dev/null
@@ -1,255 +0,0 @@
-import {execSync} from 'child_process'
-import * as fs from 'fs'
-import * as _ from 'lodash'
-import * as path from 'path'
-import * as Generator from 'yeoman-generator'
-import yosay = require('yosay')
-
-const debug = require('debug')('generator-oclif')
-const {version} = require('../../package.json')
-
-let hasYarn = false
-try {
-  execSync('yarn -v', {stdio: 'ignore'})
-  hasYarn = true
-} catch {}
-
-export default class CLI extends Generator {
-  options: {
-    defaults?: boolean;
-    force: boolean;
-    yarn: boolean;
-  }
-
-  name: string
-
-  pjson!: any
-
-  githubUser: string | undefined
-
-  answers!: {
-    name: string;
-    bin: string;
-    description: string;
-    version: string;
-    github: {repo: string; user: string};
-    author: string;
-    files: string;
-    license: string;
-    pkg: string;
-    typescript: boolean;
-    eslint: boolean;
-    mocha: boolean;
-    ci: {
-      circleci: boolean;
-      appveyor: boolean;
-      travisci: boolean;
-    };
-  }
-
-  yarn!: boolean
-
-  repository?: string
-
-  constructor(args: string | string[], opts: Generator.GeneratorOptions) {
-    super(args, opts)
-
-    this.name = opts.name
-    this.options = {
-      defaults: opts.defaults,
-      force: opts.force,
-      yarn: hasYarn,
-    }
-  }
-
-  async prompting(): Promise<void> {
-    const msg = 'Time to build an oclif CLI!'
-
-    this.log(yosay(`${msg} Version: ${version}`))
-
-    execSync(`git clone https://github.com/oclif/hello-world.git "${path.resolve(this.name)}"`)
-    fs.rmSync(`${path.resolve(this.name, '.git')}`, {recursive: true})
-
-    this.destinationRoot(path.resolve(this.name))
-    this.env.cwd = this.destinationPath()
-
-    this.githubUser = await this.user.github.username().catch(debug)
-    // establish order of properties in the resulting package.json
-    this.pjson = {
-      name: '',
-      version: '',
-      description: '',
-      author: '',
-      bin: {},
-      homepage: '',
-      license: '',
-      main: '',
-      repository: '',
-      files: [],
-      dependencies: {},
-      devDependencies: {},
-      oclif: {},
-      scripts: {},
-      engines: {},
-      ...(this.fs.readJSON(path.join(this.env.cwd, 'package.json'), {}) as Record<string, unknown>),
-    }
-    let repository = this.destinationRoot().split(path.sep).slice(-2).join('/')
-    if (this.githubUser) repository = `${this.githubUser}/${repository.split('/')[1]}`
-    const defaults = {
-      ...this.pjson,
-      name: this.name ? this.name.replace(/ /g, '-') : this.determineAppname().replace(/ /g, '-'),
-      version: '0.0.0',
-      license: 'MIT',
-      author: this.githubUser ? `${this.user.git.name()} @${this.githubUser}` : this.user.git.name(),
-      dependencies: {},
-      repository,
-      engines: {
-        node: '>=12.0.0',
-        ...this.pjson.engines,
-      },
-      options: this.options,
-    }
-    this.repository = defaults.repository
-    if (this.repository && (this.repository as any).url) {
-      this.repository = (this.repository as any).url
-    }
-
-    if (this.options.defaults) {
-      this.answers = defaults
-    } else {
-      this.answers = await this.prompt([
-        {
-          type: 'input',
-          name: 'name',
-          message: 'npm package name',
-          default: defaults.name,
-        },
-        {
-          type: 'input',
-          name: 'bin',
-          message: 'command bin name the CLI will export',
-          default: (answers: any) => answers.name,
-        },
-        {
-          type: 'input',
-          name: 'description',
-          message: 'description',
-          default: defaults.description,
-        },
-        {
-          type: 'input',
-          name: 'author',
-          message: 'author',
-          default: defaults.author,
-        },
-        {
-          type: 'input',
-          name: 'version',
-          message: 'version',
-          default: defaults.version,
-          when: !this.pjson.version,
-        },
-        {
-          type: 'input',
-          name: 'license',
-          message: 'license',
-          default: defaults.license,
-        },
-        {
-          type: 'input',
-          name: 'github.user',
-          message: 'Who is the GitHub owner of repository (https://github.com/OWNER/repo)',
-          default: repository.split('/').slice(0, -1).pop(),
-        },
-        {
-          type: 'input',
-          name: 'github.repo',
-          message: 'What is the GitHub name of repository (https://github.com/owner/REPO)',
-          default: (answers: any) => (answers.name || this.pjson.repository || this.pjson.name).split('/').pop(),
-        },
-        {
-          type: 'list',
-          name: 'pkg',
-          message: 'Select a package manager',
-          choices: [
-            {name: 'npm', value: 'npm'},
-            {name: 'yarn', value: 'yarn'},
-          ],
-          default: () => this.options.yarn || hasYarn ? 1 : 0,
-        },
-      ])
-    }
-
-    debug(this.answers)
-    if (!this.options.defaults) {
-      this.options = {
-        ...this.answers.ci,
-        yarn: this.answers.pkg === 'yarn',
-        force: true,
-      }
-    }
-
-    this.yarn = this.options.yarn
-    this.env.options.nodePackageManager = this.yarn ? 'yarn' : 'npm'
-
-    this.pjson.name = this.answers.name || defaults.name
-    this.pjson.description = this.answers.description || defaults.description
-    this.pjson.version = this.answers.version || defaults.version
-    this.pjson.engines.node = defaults.engines.node
-    this.pjson.author = this.answers.author || defaults.author
-    this.pjson.files = this.answers.files || defaults.files || '/lib'
-    this.pjson.license = this.answers.license || defaults.license
-    // eslint-disable-next-line no-multi-assign
-    this.repository = this.pjson.repository = this.answers.github ? `${this.answers.github.user}/${this.answers.github.repo}` : defaults.repository
-
-    this.pjson.homepage = `https://github.com/${this.repository}`
-    this.pjson.bugs = `https://github.com/${this.repository}/issues`
-
-    this.pjson.oclif.bin = this.answers.bin
-    this.pjson.oclif.dirname = this.answers.bin
-    this.pjson.bin = {}
-    this.pjson.bin[this.pjson.oclif.bin] = './bin/run'
-
-    if (!this.options.yarn) {
-      const scripts = (this.pjson.scripts || {}) as Record<string, string>
-      this.pjson.scripts = Object.fromEntries(Object.entries(scripts).map(([k, v]) => [k, v.replace('yarn', 'npm run')]))
-    }
-  }
-
-  writing(): void {
-    if (this.pjson.oclif && Array.isArray(this.pjson.oclif.plugins)) {
-      this.pjson.oclif.plugins.sort()
-    }
-
-    if (_.isEmpty(this.pjson.oclif)) delete this.pjson.oclif
-    this.pjson.files = _.uniq((this.pjson.files || []).sort())
-    this.fs.writeJSON(this.destinationPath('./package.json'), this.pjson)
-
-    this.fs.write(this.destinationPath('.gitignore'), this._gitignore())
-    this.fs.delete(this.destinationPath('LICENSE'))
-  }
-
-  end(): void {
-    this.spawnCommandSync(this.env.options.nodePackageManager, ['run', 'build'])
-    this.spawnCommandSync(path.join(this.env.cwd, 'node_modules', '.bin', 'oclif'), ['readme'], {cwd: this.env.cwd})
-    console.log(`\nCreated ${this.pjson.name} in ${this.destinationRoot()}`)
-  }
-
-  private _gitignore(): string {
-    const existing = this.fs.exists(this.destinationPath('.gitignore')) ? this.fs.read(this.destinationPath('.gitignore')).split('\n') : []
-    return _([
-      '*-debug.log',
-      '*-error.log',
-      'node_modules',
-      '/tmp',
-      '/dist',
-      this.yarn ? '/package-lock.json' : '/yarn.lock',
-      '/lib',
-    ])
-    .concat(existing)
-    .compact()
-    .uniq()
-    .sort()
-    .join('\n') + '\n'
-  }
-}
diff --git a/src/generators/command.ts b/src/generators/command.ts
deleted file mode 100644
index 8d02c1e66..000000000
--- a/src/generators/command.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as _ from 'lodash'
-import * as path from 'path'
-import * as Generator from 'yeoman-generator'
-import yosay = require('yosay')
-import {GeneratorOptions, PackageJson} from '../types'
-
-const {version} = require('../../package.json')
-
-export default class Command extends Generator {
-  public options: GeneratorOptions
-  public pjson!: PackageJson
-
-  constructor(args: string | string[], opts: GeneratorOptions) {
-    super(args, opts)
-    this.options = {
-      name: opts.name,
-      defaults: opts.defaults,
-      force: opts.force,
-    }
-  }
-
-  private hasMocha(): boolean {
-    return Boolean(this.pjson.devDependencies?.mocha)
-  }
-
-  public async prompting(): Promise<void> {
-    this.pjson = this.fs.readJSON('package.json') as unknown as PackageJson
-    if (!this.pjson) throw new Error('not in a project directory')
-    this.pjson.oclif = this.pjson.oclif || {}
-    this.log(yosay(`Adding a command to ${this.pjson.name} Version: ${version}`))
-  }
-
-  public writing(): void {
-    const cmdPath = this.options.name.split(':').join('/')
-    this.sourceRoot(path.join(__dirname, '../../templates'))
-    let bin = this.pjson.oclif.bin || this.pjson.oclif.dirname || this.pjson.name
-    if (bin.includes('/')) bin = bin.split('/').pop()!
-    const cmd = `${bin} ${this.options.name}`
-    const commandPath = this.destinationPath(`src/commands/${cmdPath}.ts`)
-    const opts = {...this.options, bin, cmd, _, type: 'command', path: commandPath}
-    this.fs.copyTpl(this.templatePath('src/command.ts.ejs'), commandPath, opts)
-    if (this.hasMocha()) {
-      this.fs.copyTpl(this.templatePath('test/command.test.ts.ejs'), this.destinationPath(`test/commands/${cmdPath}.test.ts`), opts)
-    }
-  }
-}
diff --git a/src/generators/hook.ts b/src/generators/hook.ts
deleted file mode 100644
index 7653b0f0b..000000000
--- a/src/generators/hook.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as _ from 'lodash'
-import * as path from 'path'
-import * as Generator from 'yeoman-generator'
-import yosay = require('yosay')
-import {GeneratorOptions, PackageJson} from '../types'
-
-const {version} = require('../../package.json')
-
-export interface Options extends GeneratorOptions {
-  event: string;
-}
-
-export default class Hook extends Generator {
-  public pjson!: PackageJson
-
-  constructor(args: string | string[], public options: Options) {
-    super(args, options)
-  }
-
-  private hasMocha(): boolean {
-    return Boolean(this.pjson.devDependencies?.mocha)
-  }
-
-  public async prompting(): Promise<void> {
-    this.pjson = this.fs.readJSON('package.json') as unknown as PackageJson
-    this.pjson.oclif = this.pjson.oclif || {}
-    if (!this.pjson) throw new Error('not in a project directory')
-    this.log(yosay(`Adding a ${this.options.event} hook to ${this.pjson.name} Version: ${version}`))
-  }
-
-  public writing(): void {
-    this.sourceRoot(path.join(__dirname, '../../templates'))
-    this.fs.copyTpl(this.templatePath('src/hook.ts.ejs'), this.destinationPath(`src/hooks/${this.options.event}/${this.options.name}.ts`), this)
-    if (this.hasMocha()) {
-      this.fs.copyTpl(this.templatePath('test/hook.test.ts.ejs'), this.destinationPath(`test/hooks/${this.options.event}/${this.options.name}.test.ts`), this)
-    }
-
-    this.pjson.oclif = this.pjson.oclif || {}
-    this.pjson.oclif.hooks = this.pjson.oclif.hooks || {}
-    const hooks = this.pjson.oclif.hooks
-    const p = `./dist/hooks/${this.options.event}/${this.options.name}`
-    if (hooks[this.options.event]) {
-      hooks[this.options.event] = _.castArray(hooks[this.options.event])
-      hooks[this.options.event] = hooks[this.options.event].concat(p)
-    } else {
-      this.pjson.oclif.hooks[this.options.event] = p
-    }
-
-    this.fs.writeJSON(this.destinationPath('./package.json'), this.pjson)
-  }
-}
diff --git a/src/help-compatibility.ts b/src/help-compatibility.ts
index 5aa7aa33c..fb126d3a7 100644
--- a/src/help-compatibility.ts
+++ b/src/help-compatibility.ts
@@ -1,12 +1,13 @@
 import {Command, HelpBase} from '@oclif/core'
 
 interface MaybeCompatibleHelp extends HelpBase {
-  formatCommand?: (command: Command.Cached) => string;
-  command?: (command: Command.Cached) => string;
+  command?: (command: Command.Cached) => string
+  formatCommand?: (command: Command.Cached) => string
 }
 
 class IncompatibleHelpError extends Error {
-  message = 'Please implement `formatCommand` in your custom help class.\nSee https://oclif.io/docs/help_classes for more.'
+  message =
+    'Please implement `formatCommand` in your custom help class.\nSee https://oclif.io/docs/help_classes for more.'
 }
 
 export class HelpCompatibilityWrapper {
diff --git a/src/log.ts b/src/log.ts
index cb0b335af..41e2d4664 100644
--- a/src/log.ts
+++ b/src/log.ts
@@ -1,11 +1,12 @@
 import {ux} from '@oclif/core'
-import * as util from 'util'
+import * as util from 'node:util'
+
 import {prettifyPaths} from './util'
 
 export const debug = require('debug')('oclif')
 debug.new = (name: string) => require('debug')(`oclif:${name}`)
 
-export function log(format: string, ...args: any[]): void {
-  args = args.map((arg: any) => prettifyPaths(arg))
-  debug.enabled ? debug(format, ...args) : ux.log(`oclif: ${util.format(format, ...args)}`)
+export function log(format: string, ...args: unknown[]): void {
+  args = args.map((arg) => prettifyPaths(arg))
+  debug.enabled ? debug(format, ...args) : ux.stdout(`oclif: ${util.format(format, ...args)}`)
 }
diff --git a/src/readme-generator.ts b/src/readme-generator.ts
new file mode 100644
index 000000000..daa3d5eae
--- /dev/null
+++ b/src/readme-generator.ts
@@ -0,0 +1,335 @@
+import {Command, Config, HelpBase, Interfaces, loadHelpClass, toConfiguredId, ux} from '@oclif/core'
+import makeDebug from 'debug'
+import {render} from 'ejs'
+import * as fs from 'fs-extra'
+import {readFile} from 'node:fs/promises'
+import path from 'node:path'
+import {URL} from 'node:url'
+import normalize from 'normalize-package-data'
+
+import {HelpCompatibilityWrapper} from './help-compatibility'
+const columns = Number.parseInt(process.env.COLUMNS!, 10) || 120
+import {castArray, compact, sortBy, uniqBy} from './util'
+
+const debug = makeDebug('readme')
+
+interface HelpBaseDerived {
+  new (config: Interfaces.Config, opts?: Partial<Interfaces.HelpOptions>): HelpBase
+}
+
+type Options = {
+  aliases?: boolean
+  dryRun?: boolean
+  multi?: boolean
+  nestedTopicsDepth?: number
+  outputDir: string
+  pluginDir?: string
+  readmePath: string
+  repositoryPrefix?: string
+  version?: string
+}
+
+async function slugify(str: string): Promise<string> {
+  const {default: GithubSlugger} = await import('github-slugger')
+  const slugify = new GithubSlugger()
+  return slugify.slug(str)
+}
+
+export default class ReadmeGenerator {
+  public constructor(
+    private config: Config,
+    private options: Options,
+  ) {}
+
+  protected commandCode(c: Command.Cached): string | undefined {
+    const pluginName = c.pluginName
+    if (!pluginName) return
+    const plugin = this.config.plugins.get(pluginName)
+    if (!plugin) return
+    const repo = this.repo(plugin)
+    if (!repo) return
+    let label = plugin.name
+    let version = plugin.version
+    const commandPath = this.commandPath(plugin, c)
+    if (!commandPath) return
+    if (this.config.name === plugin.name) {
+      label = commandPath
+      version = this.options.version || version
+    }
+
+    const template =
+      this.options.repositoryPrefix ||
+      plugin.pjson.oclif.repositoryPrefix ||
+      '<%- repo %>/blob/v<%- version %>/<%- commandPath %>'
+    return `_See code: [${label}](${render(template, {c, commandPath, config: this.config, repo, version})})_`
+  }
+
+  protected async commands(commands: Command.Cached[]): Promise<string> {
+    const helpClass = await loadHelpClass(this.config)
+    return [
+      ...(await Promise.all(
+        commands.map(async (c) => {
+          const usage = this.commandUsage(c)
+          return usage
+            ? `* [\`${this.config.bin} ${usage}\`](#${await slugify(`${this.config.bin}-${usage}`)})`
+            : `* [\`${this.config.bin}\`](#${await slugify(`${this.config.bin}`)})`
+        }),
+      )),
+      '',
+      ...commands.map((c) => this.renderCommand({...c}, helpClass)).map((s) => s.trim() + '\n'),
+    ]
+      .join('\n')
+      .trim()
+  }
+
+  protected async createTopicFile(file: string, topic: Interfaces.Topic, commands: Command.Cached[]): Promise<void> {
+    const bin = `\`${this.config.bin} ${topic.name}\``
+    const doc =
+      [
+        bin,
+        '='.repeat(bin.length),
+        '',
+        render(topic.description || '', {config: this.config}).trim(),
+        '',
+        await this.commands(commands),
+      ]
+        .join('\n')
+        .trim() + '\n'
+
+    await this.write(path.resolve(this.options.pluginDir ?? process.cwd(), file), doc)
+  }
+
+  public async generate(): Promise<string> {
+    let readme = await this.read()
+    const commands = uniqBy(
+      this.config.commands
+        .filter((c) => !c.hidden && c.pluginType === 'core')
+        .filter((c) => (this.options.aliases ? true : !c.aliases.includes(c.id)))
+        .map((c) => (this.config.isSingleCommandCLI ? {...c, id: ''} : c))
+        .sort((a, b) => a.id.localeCompare(b.id)),
+      (c) => c.id,
+    )
+
+    debug('commands:', commands.map((c) => c.id).length)
+
+    readme = this.replaceTag(readme, 'usage', this.usage())
+    readme = this.replaceTag(
+      readme,
+      'commands',
+      this.options.multi
+        ? await this.multiCommands(commands, this.options.outputDir, this.options.nestedTopicsDepth)
+        : await this.commands(commands),
+    )
+    readme = this.replaceTag(readme, 'toc', await this.tableOfContents(readme))
+
+    readme = readme.trimEnd()
+    readme += '\n'
+
+    await this.write(this.options.readmePath, readme)
+
+    return readme
+  }
+
+  protected async multiCommands(
+    commands: Command.Cached[],
+    dir: string,
+    nestedTopicsDepth: number | undefined,
+  ): Promise<string> {
+    let topics = this.config.topics
+    topics = nestedTopicsDepth
+      ? topics.filter((t) => !t.hidden && (t.name.match(/:/g) || []).length < nestedTopicsDepth)
+      : topics.filter((t) => !t.hidden && !t.name.includes(':'))
+
+    topics = topics.filter((t) => commands.find((c) => c.id.startsWith(t.name)))
+    topics = uniqBy(
+      sortBy(topics, (t) => t.name),
+      (t) => t.name,
+    )
+    for (const topic of topics) {
+      // eslint-disable-next-line no-await-in-loop
+      await this.createTopicFile(
+        path.join('.', dir, topic.name.replaceAll(':', '/') + '.md'),
+        topic,
+        commands.filter((c) => c.id === topic.name || c.id.startsWith(topic.name + ':')),
+      )
+    }
+
+    return (
+      [
+        '# Command Topics\n',
+        ...topics.map((t) =>
+          compact([
+            `* [\`${this.config.bin} ${t.name.replaceAll(':', this.config.topicSeparator)}\`](${dir}/${t.name.replaceAll(':', '/')}.md)`,
+            render(t.description || '', {config: this.config})
+              .trim()
+              .split('\n')[0],
+          ]).join(' - '),
+        ),
+      ]
+        .join('\n')
+        .trim() + '\n'
+    )
+  }
+
+  protected async read(): Promise<string> {
+    return readFile(this.options.readmePath, 'utf8')
+  }
+
+  protected renderCommand(c: Command.Cached, HelpClass: HelpBaseDerived): string {
+    debug('rendering command', c.id)
+    const title = render(c.summary ?? c.description ?? '', {command: c, config: this.config})
+      .trim()
+      .split('\n')[0]
+    const help = new HelpClass(this.config, {maxWidth: columns, respectNoCacheDefault: true, stripAnsi: true})
+    const wrapper = new HelpCompatibilityWrapper(help)
+
+    const header = () => {
+      const usage = this.commandUsage(c)
+      return usage ? `## \`${this.config.bin} ${usage}\`` : `## \`${this.config.bin}\``
+    }
+
+    try {
+      // copy c to keep the command ID with colons, see:
+      // https://github.com/oclif/oclif/pull/1165#discussion_r1282305242
+      const command = {...c}
+      return compact([
+        header(),
+        title,
+        '```\n' + wrapper.formatCommand(c).trim() + '\n```',
+        this.commandCode(command),
+      ]).join('\n\n')
+    } catch (error: unknown) {
+      const {message} = error as {message: string}
+      ux.error(message)
+    }
+  }
+
+  protected replaceTag(readme: string, tag: string, body: string): string {
+    if (readme.includes(`<!-- ${tag} -->`)) {
+      if (readme.includes(`<!-- ${tag}stop -->`)) {
+        readme = readme.replace(new RegExp(`<!-- ${tag} -->(.|\n)*<!-- ${tag}stop -->`, 'm'), `<!-- ${tag} -->`)
+      }
+
+      ux.stdout(`replacing <!-- ${tag} --> in ${this.options.readmePath}`)
+    }
+
+    return readme.replace(`<!-- ${tag} -->`, `<!-- ${tag} -->\n${body}\n<!-- ${tag}stop -->`)
+  }
+
+  protected async tableOfContents(readme: string): Promise<string> {
+    const toc = await Promise.all(
+      readme
+        .split('\n')
+        .filter((l) => l.startsWith('# '))
+        .map((l) => l.trim().slice(2))
+        .map(async (l) => `* [${l}](#${await slugify(l)})`),
+    )
+
+    return toc.join('\n')
+  }
+
+  protected usage(): string {
+    const versionFlags = ['--version', ...(this.config.pjson.oclif.additionalVersionFlags ?? []).sort()]
+    const versionFlagsString = `(${versionFlags.join('|')})`
+    return [
+      `\`\`\`sh-session
+$ npm install -g ${this.config.name}
+$ ${this.config.bin} COMMAND
+running command...
+$ ${this.config.bin} ${versionFlagsString}
+${this.config.name}/${this.options.version || this.config.version} ${process.platform}-${process.arch} node-v${
+        process.versions.node
+      }
+$ ${this.config.bin} --help [COMMAND]
+USAGE
+  $ ${this.config.bin} COMMAND
+...
+\`\`\`\n`,
+    ]
+      .join('\n')
+      .trim()
+  }
+
+  protected async write(file: string, content: string): Promise<void> {
+    if (!this.options.dryRun) await fs.outputFile(file, content)
+  }
+
+  /**
+   * fetches the path to a command
+   */
+  private commandPath(plugin: Interfaces.Plugin, c: Command.Cached): string | undefined {
+    const strategy =
+      typeof plugin.pjson.oclif?.commands === 'string' ? 'pattern' : plugin.pjson.oclif?.commands?.strategy
+
+    // if the strategy is explicit, we can't determine the path so return undefined
+    if (strategy === 'explicit') return
+
+    const commandsDir =
+      typeof plugin.pjson.oclif?.commands === 'string'
+        ? plugin.pjson.oclif?.commands
+        : plugin.pjson.oclif?.commands?.target
+
+    if (!commandsDir) return
+    const hasTypescript = plugin.pjson.devDependencies?.typescript || plugin.pjson.dependencies?.typescript
+    let p = path.join(plugin.root, commandsDir, ...c.id.split(':'))
+    const outDir = path.dirname(commandsDir.replace(/^.\/|.\\/, '')) // remove leading ./ or .\ from path
+    const outDirRegex = new RegExp('^' + outDir + (path.sep === '\\' ? '\\\\' : path.sep))
+    if (fs.pathExistsSync(path.join(p, 'index.js'))) {
+      p = path.join(p, 'index.js')
+    } else if (fs.pathExistsSync(p + '.js')) {
+      p += '.js'
+    } else if (hasTypescript) {
+      // check if non-compiled scripts are available
+      const base = p.replace(plugin.root + path.sep, '')
+      p = path.join(plugin.root, base.replace(outDirRegex, 'src' + path.sep))
+      if (fs.pathExistsSync(path.join(p, 'index.ts'))) {
+        p = path.join(p, 'index.ts')
+      } else if (fs.pathExistsSync(p + '.ts')) {
+        p += '.ts'
+      } else return
+    } else return
+    p = p.replace(plugin.root + path.sep, '')
+    if (hasTypescript) {
+      p = p.replace(outDirRegex, 'src' + path.sep).replace(/\.js$/, '.ts')
+    }
+
+    p = p.replaceAll('\\', '/') // Replace windows '\' by '/'
+    return p
+  }
+
+  private commandUsage(command: Command.Cached): string {
+    const arg = (arg: Command.Arg.Cached) => {
+      const name = arg.name.toUpperCase()
+      if (arg.required) return `${name}`
+      return `[${name}]`
+    }
+
+    const id = toConfiguredId(command.id, this.config)
+    const defaultUsage = () =>
+      compact([
+        id,
+        Object.values(command.args)
+          .filter((a) => !a.hidden)
+          .map((a) => arg(a))
+          .join(' '),
+      ]).join(' ')
+
+    const usages = castArray(command.usage)
+    return render(usages.length === 0 ? defaultUsage() : usages[0], {command, config: this.config})
+  }
+
+  private repo(plugin: Interfaces.Plugin): string | undefined {
+    const pjson = {...plugin.pjson}
+    normalize(pjson)
+    const repo = pjson.repository && pjson.repository.url
+    if (!repo) return
+    const url = new URL(repo)
+    if (
+      !['github.com', 'gitlab.com'].includes(url.hostname) &&
+      !pjson.oclif.repositoryPrefix &&
+      !this.options.repositoryPrefix
+    )
+      return
+    return `https://${url.hostname}${url.pathname.replace(/\.git$/, '')}`
+  }
+}
diff --git a/src/tarballs/bin.ts b/src/tarballs/bin.ts
index 51651de7b..0f376620a 100644
--- a/src/tarballs/bin.ts
+++ b/src/tarballs/bin.ts
@@ -1,20 +1,30 @@
 /* eslint-disable no-useless-escape */
 import {Interfaces} from '@oclif/core'
-import * as fs from 'fs'
-import * as path from 'path'
 import {exec as execSync} from 'node:child_process'
+import * as fs from 'node:fs'
+import * as path from 'node:path'
 import {promisify} from 'node:util'
 
 const exec = promisify(execSync)
 
-export async function writeBinScripts({config, baseWorkspace, nodeVersion}: {
-  config: Interfaces.Config; baseWorkspace: string; nodeVersion: string;
+export async function writeBinScripts({
+  baseWorkspace,
+  config,
+  nodeOptions,
+  nodeVersion,
+}: {
+  baseWorkspace: string
+  config: Interfaces.Config
+  nodeOptions: string[]
+  nodeVersion: string
 }): Promise<void> {
   const binPathEnvVar = config.scopedEnvVarKey('BINPATH')
   const redirectedEnvVar = config.scopedEnvVarKey('REDIRECTED')
   const clientHomeEnvVar = config.scopedEnvVarKey('OCLIF_CLIENT_HOME')
   const writeWin32 = async (bin: string) => {
-    await fs.promises.writeFile(path.join(baseWorkspace, 'bin', `${bin}.cmd`), `@echo off
+    await fs.promises.writeFile(
+      path.join(baseWorkspace, 'bin', `${bin}.cmd`),
+      `@echo off
 setlocal enableextensions
 
 if not "%${redirectedEnvVar}%"=="1" if exist "%LOCALAPPDATA%\\${bin}\\client\\bin\\${bin}.cmd" (
@@ -24,19 +34,23 @@ if not "%${redirectedEnvVar}%"=="1" if exist "%LOCALAPPDATA%\\${bin}\\client\\bi
 )
 
 if not defined ${binPathEnvVar} set ${binPathEnvVar}="%~dp0${bin}.cmd"
+
 if exist "%~dp0..\\bin\\node.exe" (
-  "%~dp0..\\bin\\node.exe" "%~dp0..\\bin\\run" %*
+  "%~dp0..\\bin\\node.exe" ${`${nodeOptions.join(' ')} `}"%~dp0..\\bin\\run" %*
 ) else if exist "%LOCALAPPDATA%\\oclif\\node\\node-${nodeVersion}.exe" (
-  "%LOCALAPPDATA%\\oclif\\node\\node-${nodeVersion}.exe" "%~dp0..\\bin\\run" %*
+  "%LOCALAPPDATA%\\oclif\\node\\node-${nodeVersion}.exe" ${`${nodeOptions.join(' ')} `}"%~dp0..\\bin\\run" %*
 ) else (
-  node "%~dp0..\\bin\\run" %*
+  node ${`${nodeOptions.join(' ')} `}"%~dp0..\\bin\\run" %*
 )
-`)
+`,
+    )
   }
 
   const writeUnix = async () => {
     const bin = path.join(baseWorkspace, 'bin', config.bin)
-    await fs.promises.writeFile(bin, `#!/usr/bin/env bash
+    await fs.promises.writeFile(
+      bin,
+      `#!/usr/bin/env bash
 set -e
 echoerr() { echo "$@" 1>&2; }
 
@@ -77,19 +91,22 @@ else
     exit 1
   fi
   if [ "\$DEBUG" == "*" ]; then
-    echoerr ${binPathEnvVar}="\$${binPathEnvVar}" "\$NODE" "\$DIR/run" "\$@"
+    echoerr ${binPathEnvVar}="\$${binPathEnvVar}" "\$NODE" ${`${nodeOptions.join(' ')} `}"\$DIR/run" "\$@"
   fi
-  "\$NODE" "\$DIR/run" "\$@"
+  "\$NODE" ${`${nodeOptions.join(' ')} `}"\$DIR/run" "\$@"
 fi
-`, {mode: 0o755})
+`,
+      {mode: 0o755},
+    )
   }
 
   await Promise.all([
     writeWin32(config.bin),
     writeUnix(),
-    ...config.binAliases?.map(
-      alias => process.platform === 'win32' ?
-        writeWin32(alias) :
-        exec(`ln -sf ${config.bin} ${alias}`, {cwd: path.join(baseWorkspace, 'bin')})) ?? [],
+    ...(config.binAliases?.map((alias) =>
+      process.platform === 'win32'
+        ? writeWin32(alias)
+        : exec(`ln -sf ${config.bin} ${alias}`, {cwd: path.join(baseWorkspace, 'bin')}),
+    ) ?? []),
   ])
 }
diff --git a/src/tarballs/build.ts b/src/tarballs/build.ts
index 27ed6f6b7..d32dd9702 100644
--- a/src/tarballs/build.ts
+++ b/src/tarballs/build.ts
@@ -1,182 +1,280 @@
-import {Interfaces} from '@oclif/core'
-import * as findYarnWorkspaceRoot from 'find-yarn-workspace-root'
+import {Interfaces, ux} from '@oclif/core'
+import findYarnWorkspaceRoot from 'find-yarn-workspace-root'
+import {copy, emptyDir, move, readJSON, remove, writeJSON} from 'fs-extra'
+import {exec as execSync} from 'node:child_process'
+import {existsSync} from 'node:fs'
+import {mkdir, readdir, rm} from 'node:fs/promises'
+import * as path from 'node:path'
+import {promisify} from 'node:util'
+import {lt} from 'semver'
+
 import {log} from '../log'
-import * as path from 'path'
-import * as fs from 'fs-extra'
+import {commitAWSDir, templateShortKey} from '../upload-util'
+import {hash, prettifyPaths} from '../util'
 import {writeBinScripts} from './bin'
 import {BuildConfig} from './config'
 import {fetchNodeBinary} from './node'
-import {commitAWSDir, templateShortKey} from '../upload-util'
-import {prettifyPaths, hash} from '../util'
-import {exec as execSync} from 'child_process'
-import {promisify} from 'node:util'
 
 const exec = promisify(execSync)
 
 const pack = async (from: string, to: string) => {
   const cwd = path.dirname(from)
-  await fs.promises.mkdir(path.dirname(to), {recursive: true})
-  log(`packing tarball from ${prettifyPaths(path.dirname(from))} to ${prettifyPaths(to)}`);
-  (to.endsWith('gz') ?
-    await exec(`tar czf ${to} ${(path.basename(from))}`, {cwd}) :
-    await exec(`tar cfJ ${to} ${(path.basename(from))}`, {cwd}))
+  await mkdir(path.dirname(to), {recursive: true})
+  log(`packing tarball from ${prettifyPaths(path.dirname(from))} to ${prettifyPaths(to)}`)
+  to.endsWith('gz')
+    ? await exec(`tar czf ${to} ${path.basename(from)}${process.platform === 'win32' ? ' --force-local' : ''}`, {cwd})
+    : await exec(`tar cfJ ${to} ${path.basename(from)}${process.platform === 'win32' ? ' --force-local' : ''}`, {cwd})
 }
 
-export async function build(c: BuildConfig, options: {
-  platform?: string;
-  pack?: boolean;
-  tarball?: string;
-  parallel?: boolean;
-} = {}): Promise<void> {
-  const {xz, config} = c
-  const packCLI = async () => {
-    const {stdout} = await exec('npm pack --unsafe-perm', {cwd: c.root})
-    return path.join(c.root, stdout.trim().split('\n').pop()!)
-  }
+const isYarnProject = (yarnRootPath: string) => {
+  const yarnLockFileName = 'yarn.lock'
+  const rootYarnLockFilePath = path.join(yarnRootPath, yarnLockFileName)
 
-  const extractCLI = async (tarball: string) => {
-    await fs.emptyDir(c.workspace())
-    const tarballNewLocation = path.join(c.workspace(), path.basename(tarball))
-    await fs.move(tarball, tarballNewLocation)
-    await exec(`tar -xzf "${tarballNewLocation}"`, {cwd: c.workspace()})
-
-    await Promise.all(
-      (await fs.promises.readdir(path.join(c.workspace(), 'package'), {withFileTypes: true}))
-      .map(i => fs.move(path.join(c.workspace(), 'package', i.name), path.join(c.workspace(), i.name))),
-    )
-
-    await Promise.all([
-      fs.promises.rm(path.join(c.workspace(), 'package'), {recursive: true}),
-      fs.promises.rm(path.join(c.workspace(), path.basename(tarball)), {recursive: true}),
-      fs.remove(path.join(c.workspace(), 'bin', 'run.cmd')),
-    ])
-  }
+  return existsSync(rootYarnLockFilePath)
+}
 
-  const updatePJSON = async () => {
-    const pjsonPath = path.join(c.workspace(), 'package.json')
-    const pjson = await fs.readJSON(pjsonPath)
-    pjson.version = config.version
-    pjson.oclif.update = pjson.oclif.update || {}
-    pjson.oclif.update.s3 = pjson.oclif.update.s3 || {}
-    pjson.oclif.update.s3.bucket = c.s3Config.bucket
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
-  }
+const copyYarnDirectory = async (relativePath: string, yarnRootPath: string, workspacePath: string) => {
+  const rootYarnDirectoryPath = path.join(yarnRootPath, relativePath)
+  const workspaceYarnDirectoryPath = path.join(workspacePath, relativePath)
 
-  const addDependencies = async () => {
-    const yarnRoot = findYarnWorkspaceRoot(c.root) || c.root
-    if (fs.existsSync(path.join(yarnRoot, 'yarn.lock'))) {
-      await fs.copy(path.join(yarnRoot, 'yarn.lock'), path.join(c.workspace(), 'yarn.lock'))
-      await exec('yarn --no-progress --production --non-interactive', {cwd: c.workspace()})
-    } else {
-      const lockpath = fs.existsSync(path.join(c.root, 'package-lock.json')) ?
-        path.join(c.root, 'package-lock.json') :
-        path.join(c.root, 'npm-shrinkwrap.json')
-      await fs.copy(lockpath, path.join(c.workspace(), path.basename(lockpath)))
-      await exec('npm install --production', {cwd: c.workspace()})
+  if (existsSync(rootYarnDirectoryPath)) {
+    // create the directory if it does not exist
+    if (!existsSync(workspaceYarnDirectoryPath)) {
+      await mkdir(workspaceYarnDirectoryPath, {recursive: true})
     }
+
+    // recursively copy all files in the directory
+    await copy(rootYarnDirectoryPath, workspaceYarnDirectoryPath)
   }
+}
 
-  const pretarball = async () => {
-    const pjson = await fs.readJSON(path.join(c.workspace(), 'package.json'))
-    const yarnRoot = findYarnWorkspaceRoot(c.root) || c.root
-    const yarn = fs.existsSync(path.join(yarnRoot, 'yarn.lock'))
-    if (pjson.scripts.pretarball) {
-      yarn ?
-        await exec('yarn run pretarball', {cwd: c.workspace()}) :
-        await exec('npm run pretarball', {cwd: c.workspace()})
-    }
+const copyCoreYarnFiles = async (yarnRootPath: string, workspacePath: string) => {
+  // copy yarn dependencies lock file
+  const yarnLockFileName = 'yarn.lock'
+  const rootYarnLockFilePath = path.join(yarnRootPath, yarnLockFileName)
+  const workspaceYarnLockFilePath = path.join(workspacePath, yarnLockFileName)
+
+  if (existsSync(rootYarnLockFilePath)) {
+    await copy(rootYarnLockFilePath, workspaceYarnLockFilePath)
   }
 
-  const buildTarget = async (target: { platform: Interfaces.PlatformTypes; arch: Interfaces.ArchTypes}) => {
-    const workspace = c.workspace(target)
-    const gzLocalKey = templateShortKey('versioned', '.tar.gz', {
-      arch: target.arch,
-      bin: c.config.bin,
-      platform: target.platform,
-      sha: c.gitSha,
-      version: config.version,
-    })
-
-    const xzLocalKey = templateShortKey('versioned', '.tar.xz', {
-      arch: target.arch,
-      bin: c.config.bin,
-      platform: target.platform,
-      sha: c.gitSha,
-      version: config.version,
-    })
-    const base = path.basename(gzLocalKey)
-    log(`building target ${base}`)
-    log('copying workspace', c.workspace(), workspace)
-    await fs.emptyDir(workspace)
-    await fs.copy(c.workspace(), workspace)
-    await fetchNodeBinary({
-      nodeVersion: c.nodeVersion,
-      output: path.join(workspace, 'bin', 'node'),
-      platform: target.platform,
-      arch: target.arch,
-      tmp: path.join(config.root, 'tmp'),
-    })
-    if (options.pack === false) return
-    if (options.parallel) {
-      await Promise.all(
-        [pack(workspace, c.dist(gzLocalKey))]
-        .concat(xz ? [pack(workspace, c.dist(xzLocalKey))] : []),
-      )
-    } else {
-      await pack(workspace, c.dist(gzLocalKey))
-      if (xz) await pack(workspace, c.dist(xzLocalKey))
-    }
+  // copy yarn configuration file
+  const yarnConfigFileName = '.yarnrc.yml'
+  const rootYarnConfigFilePath = path.join(yarnRootPath, yarnConfigFileName)
+  const workspaceYarnConfigFilePath = path.join(workspacePath, yarnConfigFileName)
 
-    if (!c.updateConfig.s3.host) return
-    const rollout = (typeof c.updateConfig.autoupdate === 'object' && c.updateConfig.autoupdate.rollout)
-
-    const gzCloudKey = `${commitAWSDir(config.version, c.gitSha, c.updateConfig.s3)}/${gzLocalKey}`
-    const xzCloudKey = `${commitAWSDir(config.version, c.gitSha, c.updateConfig.s3)}/${xzLocalKey}`
-
-    const [sha256gz, sha256xz] = await Promise.all([hash('sha256', c.dist(gzLocalKey))].concat(xz ? [hash('sha256', c.dist(xzLocalKey))] : []))
-
-    const manifest: Interfaces.S3Manifest = {
-      rollout: rollout === false ? undefined : rollout,
-      version: config.version,
-      sha: c.gitSha,
-      baseDir: templateShortKey('baseDir', target, {bin: c.config.bin}),
-      gz: config.s3Url(gzCloudKey),
-      xz: xz ? config.s3Url(xzCloudKey) : undefined,
-      sha256gz,
-      sha256xz,
-      node: {
-        compatible: config.pjson.engines.node,
-        recommended: c.nodeVersion,
-      },
-    }
-    const manifestFilepath = c.dist(templateShortKey('manifest', {
-      arch: target.arch,
-      bin: c.config.bin,
-      platform: target.platform,
-      sha: c.gitSha,
-      version: config.version,
-    }))
-    await fs.writeJSON(manifestFilepath, manifest, {spaces: 2})
+  if (existsSync(rootYarnConfigFilePath)) {
+    await copy(rootYarnConfigFilePath, workspaceYarnConfigFilePath)
+  }
+
+  // copy yarn releases e.g. yarn may be installed via a local config path like "yarnPath"
+  await copyYarnDirectory('./.yarn/releases/', yarnRootPath, workspacePath)
+  // copy yarn plugins if they exists
+  await copyYarnDirectory('./.yarn/plugins/', yarnRootPath, workspacePath)
+}
+
+type BuildOptions = {
+  pack?: boolean
+  parallel?: boolean
+  platform?: string
+  pruneLockfiles?: boolean
+  tarball?: string
+}
+
+export async function build(c: BuildConfig, options: BuildOptions = {}): Promise<void> {
+  log(`gathering workspace for ${c.config.bin} to ${c.workspace()}`)
+  await extractCLI(options.tarball ?? (await packCLI(c)), c)
+  await updatePJSON(c)
+  await addDependencies(c)
+  await writeBinScripts({
+    baseWorkspace: c.workspace(),
+    config: c.config,
+    nodeOptions: c.nodeOptions,
+    nodeVersion: c.nodeVersion,
+  })
+  await pretarball(c)
+  if (options.pruneLockfiles) {
+    await removeLockfiles(c)
   }
 
-  log(`gathering workspace for ${config.bin} to ${c.workspace()}`)
-  await extractCLI(options.tarball ? options.tarball : await packCLI())
-  await updatePJSON()
-  await addDependencies()
-  await writeBinScripts({config, baseWorkspace: c.workspace(), nodeVersion: c.nodeVersion})
-  await pretarball()
-  const targetsToBuild = c.targets.filter(t => !options.platform || options.platform === t.platform)
+  if (!c.updateConfig.s3?.host || !c.updateConfig.s3?.bucket) {
+    ux.warn('No S3 bucket or host configured. CLI will not be able to update itself.')
+  }
+
+  const targetsToBuild = c.targets.filter((t) => !options.platform || options.platform === t.platform)
   if (options.parallel) {
     log(`will build ${targetsToBuild.length} targets in parallel`)
-    await Promise.all(targetsToBuild.map(t => buildTarget(t)))
+    await Promise.all(targetsToBuild.map((t) => buildTarget(t, c, options)))
   } else {
     log(`will build ${targetsToBuild.length} targets sequentially`)
     for (const target of targetsToBuild) {
       // eslint-disable-next-line no-await-in-loop
-      await buildTarget(target)
+      await buildTarget(target, c, options)
     }
 
     log(`finished building ${targetsToBuild.length} targets sequentially`)
   }
 }
 
+const isLockFile = (f: string) =>
+  f.endsWith('package-lock.json') ||
+  f.endsWith('yarn.lock') ||
+  f.endsWith('npm-shrinkwrap.json') ||
+  f.endsWith('oclif.lock') ||
+  f.endsWith('pnpm-lock.yaml')
+
+/** recursively remove all lockfiles from tarball after installing dependencies */
+const removeLockfiles = async (c: BuildConfig) => {
+  const files = await readdir(c.workspace(), {recursive: true})
+  const lockfiles = files.filter((f) => isLockFile(f)).map((f) => path.join(c.workspace(), f))
+  log(`removing ${lockfiles.length} lockfiles`)
+  await Promise.all(lockfiles.map((f) => remove(f)))
+}
+
+/** runs the pretarball script from the cli being packed */
+const pretarball = async (c: BuildConfig) => {
+  const pjson = await readJSON(path.join(c.workspace(), 'package.json'))
+  if (!pjson.scripts.pretarball) return
+  const yarnRoot = findYarnWorkspaceRoot(c.root) || c.root
+  let script = 'npm run pretarball'
+  if (existsSync(path.join(yarnRoot, 'yarn.lock'))) script = 'yarn run pretarball'
+  else if (existsSync(path.join(c.root, 'pnpm-lock.yaml'))) script = 'pnpm run pretarball'
+  log(`running pretarball via ${script} in ${c.workspace()}`)
+  await exec(script, {cwd: c.workspace()})
+}
+
+const updatePJSON = async (c: BuildConfig) => {
+  const pjsonPath = path.join(c.workspace(), 'package.json')
+  const pjson = await readJSON(pjsonPath)
+  pjson.version = c.config.version
+  pjson.oclif.update = pjson.oclif.update ?? {}
+  pjson.oclif.update.s3 = pjson.oclif.update.s3 ?? {}
+  pjson.oclif.update.s3.bucket = c.s3Config.bucket
+  await writeJSON(pjsonPath, pjson, {spaces: 2})
+}
+
+const addDependencies = async (c: BuildConfig) => {
+  const yarnRoot = findYarnWorkspaceRoot(c.root) || c.root
+
+  if (isYarnProject(yarnRoot)) {
+    await copyCoreYarnFiles(yarnRoot, c.workspace())
+
+    const {stdout} = await exec('yarn -v')
+    const yarnVersion = stdout.charAt(0)
+    if (yarnVersion === '1') {
+      await exec('yarn --no-progress --production --non-interactive', {cwd: c.workspace()})
+    } else if (yarnVersion === '2') {
+      throw new Error('Yarn 2 is not supported yet. Try using Yarn 1, or Yarn 3')
+    } else {
+      try {
+        await exec('yarn workspaces focus --production', {cwd: c.workspace()})
+      } catch (error: unknown) {
+        if (error instanceof Error && error.message.includes('Command not found')) {
+          throw new Error('Missing workspace tools. Run `yarn plugin import workspace-tools`.')
+        }
+
+        throw error
+      }
+    }
+  } else if (existsSync(path.join(c.root, 'pnpm-lock.yaml'))) {
+    await copy(path.join(c.root, 'pnpm-lock.yaml'), path.join(c.workspace(), 'pnpm-lock.yaml'))
+    await exec('pnpm install --production', {cwd: c.workspace()})
+  } else {
+    const lockpath = existsSync(path.join(c.root, 'package-lock.json'))
+      ? path.join(c.root, 'package-lock.json')
+      : path.join(c.root, 'npm-shrinkwrap.json')
+    await copy(lockpath, path.join(c.workspace(), path.basename(lockpath)))
+    await exec('npm install --production', {cwd: c.workspace()})
+  }
+}
+
+const packCLI = async (c: BuildConfig) => {
+  const {stdout} = await exec('npm pack --unsafe-perm', {cwd: c.root})
+  return path.join(c.root, stdout.trim().split('\n').pop()!)
+}
+
+const extractCLI = async (tarball: string, c: BuildConfig) => {
+  const workspace = c.workspace()
+  await emptyDir(workspace)
+  const tarballNewLocation = path.join(workspace, path.basename(tarball))
+  await move(tarball, tarballNewLocation)
+  const tarCommand = `tar -xzf "${tarballNewLocation}"${process.platform === 'win32' ? ' --force-local' : ''}`
+  await exec(tarCommand, {cwd: workspace})
+  const files = await readdir(path.join(workspace, 'package'), {withFileTypes: true})
+  await Promise.all(files.map((i) => move(path.join(workspace, 'package', i.name), path.join(workspace, i.name))))
+
+  await Promise.all([
+    rm(path.join(workspace, 'package'), {recursive: true}),
+    rm(path.join(workspace, path.basename(tarball)), {recursive: true}),
+    remove(path.join(workspace, 'bin', 'run.cmd')),
+  ])
+}
+
+const buildTarget = async (
+  target: {arch: Interfaces.ArchTypes; platform: Interfaces.PlatformTypes},
+  c: BuildConfig,
+  options: BuildOptions,
+) => {
+  if (target.platform === 'win32' && target.arch === 'arm64' && lt(c.nodeVersion, '20.0.0')) {
+    ux.warn('win32-arm64 is only supported for node >=20.0.0. Skipping...')
+    return
+  }
+
+  const workspace = c.workspace(target)
+  const {arch, platform} = target
+  const {bin, version} = c.config
+  const {gitSha: sha} = c
+  const templateShortKeyCommonOptions = {arch, bin, platform, sha, version}
+
+  const [gzLocalKey, xzLocalKey] = ['.tar.gz', '.tar.xz'].map((ext) =>
+    templateShortKey('versioned', {...templateShortKeyCommonOptions, ext}),
+  )
+
+  const base = path.basename(gzLocalKey)
+  log(`building target ${base}`)
+  log('copying workspace', c.workspace(), workspace)
+  await emptyDir(workspace)
+  await copy(c.workspace(), workspace)
+  await fetchNodeBinary({
+    arch,
+    nodeVersion: c.nodeVersion,
+    output: path.join(workspace, 'bin', 'node'),
+    platform,
+    tmp: path.join(c.config.root, 'tmp'),
+  })
+  if (options.pack === false) return
+  if (options.parallel) {
+    await Promise.all([pack(workspace, c.dist(gzLocalKey)), ...(c.xz ? [pack(workspace, c.dist(xzLocalKey))] : [])])
+  } else {
+    await pack(workspace, c.dist(gzLocalKey))
+    if (c.xz) await pack(workspace, c.dist(xzLocalKey))
+  }
+
+  if (!c.updateConfig.s3?.host) return
+  const rollout = typeof c.updateConfig.autoupdate === 'object' && c.updateConfig.autoupdate.rollout
+
+  const gzCloudKey = `${commitAWSDir(version, sha, c.updateConfig.s3)}/${gzLocalKey}`
+  const xzCloudKey = `${commitAWSDir(version, sha, c.updateConfig.s3)}/${xzLocalKey}`
+
+  const [sha256gz, sha256xz] = await Promise.all([
+    hash('sha256', c.dist(gzLocalKey)),
+    ...(c.xz ? [hash('sha256', c.dist(xzLocalKey))] : []),
+  ])
+
+  const manifest: Interfaces.S3Manifest = {
+    baseDir: templateShortKey('baseDir', {...target, bin}),
+    gz: c.config.s3Url(gzCloudKey),
+    node: {
+      compatible: c.config.pjson.engines.node,
+      recommended: c.nodeVersion,
+    },
+    rollout: rollout === false ? undefined : rollout,
+    sha,
+    sha256gz,
+    sha256xz,
+    version,
+    xz: c.xz ? c.config.s3Url(xzCloudKey) : undefined,
+  }
+  const manifestFilepath = c.dist(templateShortKey('manifest', templateShortKeyCommonOptions))
+  await writeJSON(manifestFilepath, manifest, {spaces: 2})
+}
diff --git a/src/tarballs/config.ts b/src/tarballs/config.ts
index e55165af8..d61c7116e 100644
--- a/src/tarballs/config.ts
+++ b/src/tarballs/config.ts
@@ -1,87 +1,109 @@
+import {ObjectCannedACL} from '@aws-sdk/client-s3'
 import {Config, Interfaces, ux} from '@oclif/core'
-
-import * as path from 'path'
+import {exec as execSync} from 'node:child_process'
+import {mkdir} from 'node:fs/promises'
+import * as path from 'node:path'
+import {promisify} from 'node:util'
 import * as semver from 'semver'
-import * as fs from 'fs-extra'
 
-import {compact} from '../util'
 import {templateShortKey} from '../upload-util'
-import {exec as execSync} from 'child_process'
-import {promisify} from 'node:util'
+import {castArray, compact} from '../util'
 
 const exec = promisify(execSync)
 export const TARGETS = [
   'linux-x64',
   'linux-arm',
+  'linux-arm64',
   'win32-x64',
   'win32-x86',
+  'win32-arm64',
   'darwin-x64',
   'darwin-arm64',
 ]
 
-export interface BuildConfig {
-  root: string;
-  gitSha: string;
-  config: Interfaces.Config;
-  nodeVersion: string;
-  tmp: string;
-  updateConfig: BuildConfig['config']['pjson']['oclif']['update'];
-  s3Config: BuildConfig['updateConfig']['s3'] & { folder?: string; indexVersionLimit?: number};
-  xz: boolean;
-  targets: { platform: Interfaces.PlatformTypes; arch: Interfaces.ArchTypes}[];
-  workspace(target?: { platform: Interfaces.PlatformTypes; arch: Interfaces.ArchTypes}): string;
-  dist(input: string): string;
+export type S3Config = {
+  acl?: ObjectCannedACL
+} & {folder?: string; indexVersionLimit?: number} & BuildConfig['updateConfig']['s3']
+
+export type UpdateConfig = {
+  s3?: {acl?: ObjectCannedACL} & Interfaces.S3
+} & Interfaces.OclifConfiguration['update']
+
+export type BuildConfig = {
+  config: Interfaces.Config
+  dist(input: string): string
+  gitSha: string
+  nodeOptions: string[]
+  nodeVersion: string
+  root: string
+  s3Config: S3Config
+  targets: {arch: Interfaces.ArchTypes; platform: Interfaces.PlatformTypes}[]
+  tmp: string
+  updateConfig: UpdateConfig
+  workspace(target?: {arch: Interfaces.ArchTypes; platform: Interfaces.PlatformTypes}): string
+  xz: boolean
 }
 
 export async function gitSha(cwd: string, options: {short?: boolean} = {}): Promise<string> {
   const args = options.short ? ['rev-parse', '--short', 'HEAD'] : ['rev-parse', 'HEAD']
-  return (await exec(`git ${args.join(' ')}`, {cwd})).stdout.trim()
+  const {stdout} = await exec(`git ${args.join(' ')}`, {cwd})
+  return stdout.trim()
 }
 
-async function Tmp(config: Interfaces.Config,
-) {
+async function Tmp(config: Interfaces.Config) {
   const tmp = path.join(config.root, 'tmp')
-  await fs.promises.mkdir(tmp, {recursive: true})
+  await mkdir(tmp, {recursive: true})
   return tmp
 }
 
-export async function buildConfig(root: string, options: {xz?: boolean; targets?: string[]} = {}): Promise<BuildConfig> {
-  const config = await Config.load({root: path.resolve(root), devPlugins: false, userPlugins: false})
+export async function buildConfig(
+  root: string,
+  options: {targets?: string[]; xz?: boolean} = {},
+): Promise<BuildConfig> {
+  const config = await Config.load({devPlugins: false, root: path.resolve(root), userPlugins: false})
   root = config.root
   const _gitSha = await gitSha(root, {short: true})
   // eslint-disable-next-line new-cap
   const tmp = await Tmp(config)
-  const updateConfig = config.pjson.oclif.update || {}
+  const updateConfig = (config.pjson.oclif.update || {}) as UpdateConfig
   updateConfig.s3 = updateConfig.s3 || {}
-  const nodeVersion = updateConfig.node.version || process.versions.node
-  const targets = compact(options.targets || updateConfig.node.targets || TARGETS)
-  .filter(t => {
-    if (t === 'darwin-arm64' && semver.lt(nodeVersion, '16.0.0')) {
-      ux.warn('darwin-arm64 is only supported for node >=16.0.0. Skipping...')
-      return false
-    }
+  const nodeVersion = updateConfig.node?.version || process.versions.node
+  const nodeOptions = castArray((updateConfig.node ?? ({} as {options?: string | string[]})).options ?? [])
+  const targets = compact(options.targets || updateConfig.node?.targets || TARGETS)
+    .filter((t) => {
+      if (t === 'darwin-arm64' && semver.lt(nodeVersion, '16.0.0')) {
+        ux.warn('darwin-arm64 is only supported for node >=16.0.0. Skipping...')
+        return false
+      }
 
-    return true
-  })
-  .map(t => {
-    const [platform, arch] = t.split('-') as [Interfaces.PlatformTypes, Interfaces.ArchTypes]
-    return {platform, arch}
-  })
+      return true
+    })
+    .map((t) => {
+      const [platform, arch] = t.split('-') as [Interfaces.PlatformTypes, Interfaces.ArchTypes]
+      return {arch, platform}
+    })
+
+  const s3Config = {
+    ...updateConfig.s3,
+    acl: updateConfig.s3.acl as ObjectCannedACL | undefined,
+  }
   return {
-    root,
-    gitSha: _gitSha,
     config,
-    tmp,
-    updateConfig,
-    xz: options?.xz ?? updateConfig?.s3?.xz ?? true,
     dist: (...args: string[]) => path.join(config.root, 'dist', ...args),
-    s3Config: updateConfig.s3,
+    gitSha: _gitSha,
+    nodeOptions,
     nodeVersion,
+    root,
+    s3Config,
+    targets,
+    tmp,
+    updateConfig,
     workspace(target) {
       const base = path.join(config.root, 'tmp')
-      if (target && target.platform) return path.join(base, [target.platform, target.arch].join('-'), templateShortKey('baseDir', {bin: config.bin}))
+      if (target && target.platform)
+        return path.join(base, [target.platform, target.arch].join('-'), templateShortKey('baseDir', {bin: config.bin}))
       return path.join(base, templateShortKey('baseDir', {bin: config.bin}))
     },
-    targets,
+    xz: options?.xz ?? updateConfig?.s3?.xz ?? true,
   }
 }
diff --git a/src/tarballs/node.ts b/src/tarballs/node.ts
index 527ca9762..e2e562717 100644
--- a/src/tarballs/node.ts
+++ b/src/tarballs/node.ts
@@ -1,33 +1,29 @@
-import {Errors, Interfaces} from '@oclif/core'
-import * as path from 'path'
-import * as fs from 'fs-extra'
-import {pipeline as pipelineSync} from 'node:stream'
-import {log} from '../log'
+import {Interfaces} from '@oclif/core'
+import retry from 'async-retry'
+import {copy, ensureDir, move} from 'fs-extra'
 import {exec as execSync} from 'node:child_process'
+import {createWriteStream, existsSync} from 'node:fs'
+import {mkdir} from 'node:fs/promises'
+import * as path from 'node:path'
+import {pipeline} from 'node:stream/promises'
 import {promisify} from 'node:util'
-import got from 'got'
-const pipeline = promisify(pipelineSync)
+
+import {log} from '../log'
+import {checkFor7Zip} from '../util'
 
 const exec = promisify(execSync)
 
+const RETRY_TIMEOUT_MS = 1000
+
 type Options = {
-  nodeVersion: string;
-  output: string;
-  platform: Interfaces.PlatformTypes;
-  arch: Interfaces.ArchTypes | 'armv7l';
+  arch: 'armv7l' | Interfaces.ArchTypes
+  nodeVersion: string
+  output: string
+  platform: Interfaces.PlatformTypes
   tmp: string
 }
 
-async function checkFor7Zip() {
-  try {
-    await exec('7z')
-  } catch (error: any) {
-    if (error.code === 127)  Errors.error('install 7-zip to package windows tarball')
-    else throw error
-  }
-}
-
-export async function fetchNodeBinary({nodeVersion, output, platform, arch, tmp}: Options): Promise<string> {
+export async function fetchNodeBinary({arch, nodeVersion, output, platform, tmp}: Options): Promise<string> {
   if (arch === 'arm') arch = 'armv7l'
   let nodeBase = `node-v${nodeVersion}-${platform}-${arch}`
   let tarball = path.join(tmp, 'node', `${nodeBase}.tar.xz`)
@@ -44,53 +40,55 @@ export async function fetchNodeBinary({nodeVersion, output, platform, arch, tmp}
   if (platform === 'win32') cache += '.exe'
 
   const download = async () => {
-    log(`downloading ${nodeBase}`)
-    await Promise.all([
-      fs.ensureDir(path.join(tmp, 'cache', nodeVersion)),
-      fs.ensureDir(path.join(tmp, 'node')),
-    ])
+    log(`downloading ${nodeBase} (${url})`)
+    await Promise.all([ensureDir(path.join(tmp, 'cache', nodeVersion)), ensureDir(path.join(tmp, 'node'))])
     const shasums = path.join(tmp, 'cache', nodeVersion, 'SHASUMS256.txt.asc')
-    if (!fs.existsSync(shasums)) {
+    const {default: got} = await import('got')
+    if (!existsSync(shasums)) {
       await pipeline(
         got.stream(`https://nodejs.org/dist/v${nodeVersion}/SHASUMS256.txt.asc`),
-        fs.createWriteStream(shasums),
+        createWriteStream(shasums),
       )
     }
 
     const basedir = path.dirname(tarball)
-    await fs.promises.mkdir(basedir, {recursive: true})
-    await pipeline(
-      got.stream(url),
-      fs.createWriteStream(tarball),
-    )
-    if (platform !== 'win32') await exec(`grep "${path.basename(tarball)}" "${shasums}" | shasum -a 256 -c -`, {cwd: basedir})
+    await mkdir(basedir, {recursive: true})
+    await pipeline(got.stream(url), createWriteStream(tarball))
+    if (platform !== 'win32')
+      await exec(`grep "${path.basename(tarball)}" "${shasums}" | shasum -a 256 -c -`, {cwd: basedir})
   }
 
   const extract = async () => {
     log(`extracting ${nodeBase}`)
     const nodeTmp = path.join(tmp, 'node')
-    await fs.promises.mkdir(nodeTmp, {recursive: true})
-    await fs.promises.mkdir(path.dirname(cache), {recursive: true})
+    await mkdir(nodeTmp, {recursive: true})
+    await mkdir(path.dirname(cache), {recursive: true})
 
     if (platform === 'win32') {
       await exec(`7z x -bd -y "${tarball}"`, {cwd: nodeTmp})
-      await fs.move(path.join(nodeTmp, nodeBase, 'node.exe'), path.join(cache, 'node.exe'))
+      await move(path.join(nodeTmp, nodeBase, 'node.exe'), path.join(cache, 'node.exe'))
     } else {
       await exec(`tar -C "${tmp}/node" -xJf "${tarball}"`)
-      await fs.move(path.join(nodeTmp, nodeBase, 'bin', 'node'), path.join(cache, 'node'))
+      await move(path.join(nodeTmp, nodeBase, 'bin', 'node'), path.join(cache, 'node'))
     }
   }
 
-  if (!fs.existsSync(cache)) {
-    await download()
+  if (!existsSync(cache)) {
+    await retry(download, {
+      factor: 1,
+      maxTimeout: RETRY_TIMEOUT_MS,
+      minTimeout: RETRY_TIMEOUT_MS,
+      onRetry(_e, attempt) {
+        log(`retrying node download (attempt ${attempt})`)
+      },
+      retries: 3,
+    })
     await extract()
   }
 
-  await fs.copy(path.join(cache, getFilename(platform)), output)
+  await copy(path.join(cache, getFilename(platform)), output)
 
   return output
 }
 
-const getFilename = (platform: string): string => {
-  return platform === 'win32' ? 'node.exe' : 'node'
-}
+const getFilename = (platform: string): string => (platform === 'win32' ? 'node.exe' : 'node')
diff --git a/src/types/index.ts b/src/types/index.ts
deleted file mode 100644
index 493f37703..000000000
--- a/src/types/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as Generator from 'yeoman-generator'
-
-export interface PackageJson {
-  name: string;
-  devDependencies: Record<string, string>;
-  dependencies: Record<string, string>;
-  oclif: {
-    bin: string;
-    dirname: string;
-    hooks: Record<string, string | string[]>;
-  };
-}
-
-export interface GeneratorOptions extends Generator.GeneratorOptions {
-  name: string;
-  defaults?: boolean;
-  force?: boolean;
-}
diff --git a/src/upload-util.ts b/src/upload-util.ts
index c646cd385..837f1c169 100644
--- a/src/upload-util.ts
+++ b/src/upload-util.ts
@@ -1,50 +1,60 @@
 import {Interfaces} from '@oclif/core'
-
-import * as Lodash from 'lodash'
-import * as path from 'path'
+import {render} from 'ejs'
+import {join} from 'node:path'
 
 import {BuildConfig as TarballConfig} from './tarballs/config'
 
 export function commitAWSDir(version: string, sha: string, s3Config: TarballConfig['s3Config']): string {
   let s3SubDir = s3Config.folder || ''
   if (s3SubDir !== '' && s3SubDir.slice(-1) !== '/') s3SubDir = `${s3SubDir}/`
-  return path.join(s3SubDir, 'versions', version, sha)
+  return join(s3SubDir, 'versions', version, sha)
 }
 
 export function channelAWSDir(channel: string, s3Config: TarballConfig['s3Config']): string {
   let s3SubDir = s3Config.folder || ''
   if (s3SubDir !== '' && s3SubDir.slice(-1) !== '/') s3SubDir = `${s3SubDir}/`
-  return path.join(s3SubDir, 'channels', channel)
+  return join(s3SubDir, 'channels', channel)
 }
 
-// to-do:
-// When this pkg starts using oclif/core
-// refactor this key name lookup
-// helper to oclif/core
+type TemplateOptions =
+  | {
+      arch?: DebArch | Interfaces.ArchTypes
+      bin?: string
+      ext?: '.tar.gz' | '.tar.xz'
+      sha?: string
+      version?: string
+      versionShaRevision?: string
+    }
+  | Interfaces.Config.s3Key.Options
+
+// TODO: refactor this key name lookup helper to oclif/core
 export function templateShortKey(
-  type: keyof Interfaces.PJSON.S3.Templates | 'macos' | 'win32' | 'deb', ext?: '.tar.gz' | '.tar.xz' | Interfaces.Config.s3Key.Options,
-  // eslint-disable-next-line unicorn/no-object-as-default-parameter
-  options: Interfaces.Config.s3Key.Options = {root: '.'},
+  type: 'deb' | 'macos' | 'win32' | keyof Interfaces.S3Templates,
+  options?: TemplateOptions,
 ): string {
-  if (typeof ext === 'object') options = Object.assign(options, ext)
-  else if (ext) options.ext = ext
-  const _: typeof Lodash = require('lodash')
+  if (!options)
+    options = {
+      root: '.',
+    }
   const templates = {
     baseDir: '<%- bin %>',
+    deb: '<%- bin %>_<%- versionShaRevision %>_<%- arch %>.deb',
+    macos: '<%- bin %>-v<%- version %>-<%- sha %>-<%- arch %>.pkg',
+    manifest: '<%- bin %>-v<%- version %>-<%- sha %>-<%- platform %>-<%- arch %>-buildmanifest',
     unversioned: '<%- bin %>-<%- platform %>-<%- arch %><%- ext %>',
     versioned: '<%- bin %>-v<%- version %>-<%- sha %>-<%- platform %>-<%- arch %><%- ext %>',
-    manifest: '<%- bin %>-v<%- version %>-<%- sha %>-<%- platform %>-<%- arch %>-buildmanifest',
-    macos: '<%- bin %>-v<%- version %>-<%- sha %>-<%- arch %>.pkg',
     win32: '<%- bin %>-v<%- version %>-<%- sha %>-<%- arch %>.exe',
-    deb: '<%- bin %>_<%- versionShaRevision %>_<%- arch %>.deb',
   }
-  return _.template(templates[type])({...options})
+  return render(templates[type], {...options})
 }
 
-export function debArch(arch: Interfaces.ArchTypes): string {
+export type DebArch = 'amd64' | 'arm64' | 'armel' | 'i386'
+
+export function debArch(arch: Interfaces.ArchTypes): DebArch {
   if (arch === 'x64') return 'amd64'
   if (arch === 'x86') return 'i386'
   if (arch === 'arm') return 'armel'
+  if (arch === 'arm64') return 'arm64'
   throw new Error(`invalid arch: ${arch}`)
 }
 
diff --git a/src/util.ts b/src/util.ts
index d6e3f3392..5ae66b32c 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -1,60 +1,64 @@
-import _ = require('lodash')
-import * as os from 'os'
+import {Errors} from '@oclif/core'
+import {exec as execSync} from 'node:child_process'
 import * as crypto from 'node:crypto'
+import {createReadStream} from 'node:fs'
+import * as os from 'node:os'
+import {promisify} from 'node:util'
+
 import {log} from './log'
-import * as fs from 'fs-extra'
+const exec = promisify(execSync)
 
 export function castArray<T>(input?: T | T[]): T[] {
   if (input === undefined) return []
   return Array.isArray(input) ? input : [input]
 }
 
-export function uniqBy<T>(arr: T[], fn: (cur: T) => any): T[] {
+export function uniqBy<T>(arr: T[], fn: (cur: T) => unknown): T[] {
   return arr.filter((a, i) => {
     const aVal = fn(a)
-    return !arr.find((b, j) => j > i && fn(b) === aVal)
+    return !arr.some((b, j) => j > i && fn(b) === aVal)
   })
 }
 
 export function compact<T>(a: (T | undefined)[]): T[] {
+  // eslint-disable-next-line unicorn/prefer-native-coercion-functions
   return a.filter((a): a is T => Boolean(a))
 }
 
-export function sortBy<T>(arr: T[], fn: (i: T) => sort.Types | sort.Types[]): T[] {
-  function compare(a: sort.Types | sort.Types[], b: sort.Types | sort.Types[]): number {
-    a = a === undefined ? 0 : a
-    b = b === undefined ? 0 : b
+export function uniq<T>(arr: T[]): T[] {
+  return [...new Set(arr)]
+}
+
+type Types = boolean | number | string | undefined
 
-    if (Array.isArray(a) && Array.isArray(b)) {
-      if (a.length === 0 && b.length === 0) return 0
-      const diff = compare(a[0], b[0])
-      if (diff !== 0) return diff
-      return compare(a.slice(1), b.slice(1))
-    }
+function compare(a: Types | Types[], b: Types | Types[]): number {
+  a = a === undefined ? 0 : a
+  b = b === undefined ? 0 : b
 
-    if (a < b) return -1
-    if (a > b) return 1
-    return 0
+  if (Array.isArray(a) && Array.isArray(b)) {
+    if (a.length === 0 && b.length === 0) return 0
+    const diff = compare(a[0], b[0])
+    if (diff !== 0) return diff
+    return compare(a.slice(1), b.slice(1))
   }
 
-  return arr.sort((a, b) => compare(fn(a), fn(b)))
+  if (a < b) return -1
+  if (a > b) return 1
+  return 0
 }
 
-export namespace sort {
-  export type Types = string | number | undefined | boolean
+export function sortBy<T>(arr: T[], fn: (i: T) => Types | Types[]): T[] {
+  return arr.sort((a, b) => compare(fn(a), fn(b)))
 }
 
-// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
-export const template = (context: any) => (t: string | undefined): string => _.template(t || '')(context)
-
 interface VersionsObject {
-  [key: string]: string;
+  [key: string]: string
 }
 
 export const sortVersionsObjectByKeysDesc = (input: VersionsObject): VersionsObject => {
   const keys = Reflect.ownKeys(input).sort((a, b) => {
-    const splitA = (a as string).split('.').map(part => Number.parseInt(part, 10))
-    const splitB = (b as string).split('.').map(part => Number.parseInt(part, 10))
+    const splitA = (a as string).split('.').map((part) => Number.parseInt(part, 10))
+    const splitB = (b as string).split('.').map((part) => Number.parseInt(part, 10))
     // sort by major
     if (splitA[0] < splitB[0]) return 1
     if (splitA[0] > splitB[0]) return -1
@@ -77,17 +81,35 @@ export const sortVersionsObjectByKeysDesc = (input: VersionsObject): VersionsObj
 const homeRegexp = new RegExp(`\\B${os.homedir().replace('/', '\\/')}`, 'g')
 const curRegexp = new RegExp(`\\B${process.cwd()}`, 'g')
 
-export const prettifyPaths = (input: string): string =>
+export const prettifyPaths = (input: unknown): string =>
   (input ?? '').toString().replace(curRegexp, '.').replace(homeRegexp, '~')
 
-export const hash = async (algo: string, fp: string | string[]):Promise<string> => {
+export const hash = async (algo: string, fp: string | string[]): Promise<string> => {
   const f = Array.isArray(fp) ? fp.join('') : fp
   log('hash', algo, f)
   return new Promise<string>((resolve, reject) => {
     const hashInProgress = crypto.createHash(algo)
-    const stream = fs.createReadStream(f)
-    stream.on('error', err => reject(err))
-    stream.on('data', chunk => hashInProgress.update(chunk))
+    const stream = createReadStream(f)
+    stream.on('error', (err) => reject(err))
+    stream.on('data', (chunk) => hashInProgress.update(chunk))
     stream.on('end', () => resolve(hashInProgress.digest('hex')))
   })
 }
+
+export async function checkFor7Zip() {
+  try {
+    await exec('7z')
+  } catch (error: unknown) {
+    const {code} = error as {code: number}
+    if (code === 127) Errors.error('install 7-zip to package windows tarball')
+    else throw error
+  }
+}
+
+export function isEmpty(obj: Record<string, unknown>): boolean {
+  return Object.keys(obj).length === 0
+}
+
+export function validateBin(bin: string): boolean {
+  return /^[\w-]+$/.test(bin)
+}
diff --git a/src/version-indexes.ts b/src/version-indexes.ts
index 09432881a..3348bb85b 100644
--- a/src/version-indexes.ts
+++ b/src/version-indexes.ts
@@ -1,30 +1,34 @@
+import {ObjectCannedACL} from '@aws-sdk/client-s3'
 import * as fs from 'fs-extra'
-import * as path from 'path'
+import * as path from 'node:path'
+
 import aws from './aws'
-import {BuildConfig} from './tarballs'
 import {debug as Debug} from './log'
+import {BuildConfig} from './tarballs'
 
 const debug = Debug.new('version-indexes')
 
 interface VersionsObject {
-  [key: string]: string;
+  [key: string]: string
 }
 
 const sortVersionsObjectByKeysDesc = (input: VersionsObject, keyLimit?: number): VersionsObject => {
-  const keys = (Reflect.ownKeys(input).sort((a, b) => {
-    const splitA = (a as string).split('.').map(part => Number.parseInt(part, 10))
-    const splitB = (b as string).split('.').map(part => Number.parseInt(part, 10))
-    // sort by major
-    if (splitA[0] < splitB[0]) return 1
-    if (splitA[0] > splitB[0]) return -1
-    // sort by minor
-    if (splitA[1] < splitB[1]) return 1
-    if (splitA[1] > splitB[1]) return -1
-    // sort by patch
-    if (splitA[2] < splitB[2]) return 1
-    if (splitA[2] > splitB[2]) return -1
-    return 0
-  }) as string[]).slice(0, keyLimit) // undefined keyLimit returns the entire array
+  const keys = (
+    Reflect.ownKeys(input).sort((a, b) => {
+      const splitA = (a as string).split('.').map((part) => Number.parseInt(part, 10))
+      const splitB = (b as string).split('.').map((part) => Number.parseInt(part, 10))
+      // sort by major
+      if (splitA[0] < splitB[0]) return 1
+      if (splitA[0] > splitB[0]) return -1
+      // sort by minor
+      if (splitA[1] < splitB[1]) return 1
+      if (splitA[1] > splitB[1]) return -1
+      // sort by patch
+      if (splitA[2] < splitB[2]) return 1
+      if (splitA[2] > splitB[2]) return -1
+      return 0
+    }) as string[]
+  ).slice(0, keyLimit) // undefined keyLimit returns the entire array
   const result: VersionsObject = {}
   for (const key of keys) {
     result[key] = input[key]
@@ -34,45 +38,67 @@ const sortVersionsObjectByKeysDesc = (input: VersionsObject, keyLimit?: number):
 }
 
 // appends to an existing file (or writes a new one) with the versions in descending order, with an optional limit from the pjson file
-export const appendToIndex = async (input: { version: string; originalUrl: string; filename: string; maxAge: string; s3Config: BuildConfig['s3Config'] }): Promise<void> => {
-  const {version, originalUrl, filename, maxAge, s3Config} = input
+export const appendToIndex = async (input: {
+  dryRun?: boolean
+  filename: string
+  maxAge: string
+  originalUrl: string
+  s3Config: BuildConfig['s3Config']
+  version: string
+}): Promise<void> => {
+  const {filename, maxAge, originalUrl, s3Config, version} = input
   // these checks are both nice for users AND helpful for TS
   if (!s3Config.bucket) throw new Error('[package.json].oclif.s3.bucket is required for indexes')
   if (!s3Config.host) throw new Error('[package.json].oclif.s3.host is required for indexes')
 
   // json-friendly filenames like sfdx-linux-x64-tar-gz
-  const jsonFileName = `${filename.replace(/\./g, '-')}.json`
+  const jsonFileName = `${filename.replaceAll('.', '-')}.json`
   // folder is optional, but honored if present
   const key = path.join(s3Config.folder ?? '', 'versions', jsonFileName)
 
   // retrieve existing index file
   let existing = {}
   try {
-    existing = JSON.parse((await aws.s3.getObject({
+    const {Body} = await aws.s3.getObject({
       Bucket: s3Config.bucket,
       Key: key,
-    })).Body?.toString() as string)
+    })
+    // @ts-expect-error because StreamingBlobTypes doesn't have transformToString
+    // but it's expected to be there according to the docs
+    // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-types/TypeAlias/StreamingBlobPayloadOutputTypes/
+    // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-types/Interface/SdkStreamMixin/
+    existing = JSON.parse(await Body?.transformToString())
     debug('appending to existing index file')
-  } catch (error: any) {
+  } catch (error: unknown) {
     debug(`error on ${key}`, error)
   }
 
   // appends new version from this promotion if not already present (idempotent)
-  await fs.writeJSON(jsonFileName, sortVersionsObjectByKeysDesc(
-    {
-      ...existing,
-      [version]: originalUrl.replace(s3Config.bucket, s3Config.host),
-    }, s3Config.indexVersionLimit,
-  ), {spaces: 2})
+  await fs.writeJSON(
+    jsonFileName,
+    sortVersionsObjectByKeysDesc(
+      {
+        ...existing,
+        [version]: originalUrl.replace(s3Config.bucket, s3Config.host),
+      },
+      s3Config.indexVersionLimit,
+    ),
+    {spaces: 2},
+  )
 
   // put the file back in the same place
-  await aws.s3.uploadFile(jsonFileName, {
-    Bucket: s3Config.bucket,
-    Key: key,
-    CacheControl: maxAge,
-    ACL: s3Config.acl || 'public-read',
-  })
+  await aws.s3.uploadFile(
+    jsonFileName,
+    {
+      ACL: s3Config.acl ?? ObjectCannedACL.public_read,
+      Bucket: s3Config.bucket,
+      CacheControl: maxAge,
+      Key: key,
+    },
+    {
+      dryRun: input.dryRun,
+    },
+  )
   // cleans up local fs
   await fs.remove(jsonFileName)
 }
-
diff --git a/templates/cli/commonjs/.mocharc.json.ejs b/templates/cli/commonjs/.mocharc.json.ejs
new file mode 100644
index 000000000..2febd2c36
--- /dev/null
+++ b/templates/cli/commonjs/.mocharc.json.ejs
@@ -0,0 +1,11 @@
+{
+  "require": [
+    "ts-node/register"
+  ],
+  "watch-extensions": [
+    "ts"
+  ],
+  "recursive": true,
+  "reporter": "spec",
+  "timeout": 60000
+}
diff --git a/templates/cli/commonjs/.vscode/launch.json.ejs b/templates/cli/commonjs/.vscode/launch.json.ejs
new file mode 100644
index 000000000..35b978d0c
--- /dev/null
+++ b/templates/cli/commonjs/.vscode/launch.json.ejs
@@ -0,0 +1,20 @@
+{
+  "version": "0.2.0",
+  "configurations": [
+    {
+      "type": "node",
+      "request": "attach",
+      "name": "Attach",
+      "port": 9229,
+      "skipFiles": ["<node_internals>/**"]
+    },
+    {
+      "type": "node",
+      "request": "launch",
+      "name": "Execute Command",
+      "skipFiles": ["<node_internals>/**"],
+      "program": "${workspaceFolder}/bin/dev.js",
+      "args": ["hello", "world"]
+    }
+  ]
+}
diff --git a/templates/cli/commonjs/bin/dev.cmd.ejs b/templates/cli/commonjs/bin/dev.cmd.ejs
new file mode 100644
index 000000000..077b57ae7
--- /dev/null
+++ b/templates/cli/commonjs/bin/dev.cmd.ejs
@@ -0,0 +1,3 @@
+@echo off
+
+node "%~dp0\dev" %*
\ No newline at end of file
diff --git a/templates/cli/commonjs/bin/dev.js.ejs b/templates/cli/commonjs/bin/dev.js.ejs
new file mode 100755
index 000000000..7b76f0c11
--- /dev/null
+++ b/templates/cli/commonjs/bin/dev.js.ejs
@@ -0,0 +1,6 @@
+#!/usr/bin/env node_modules/.bin/ts-node
+// eslint-disable-next-line node/shebang, unicorn/prefer-top-level-await
+;(async () => {
+  const oclif = await import('@oclif/core')
+  await oclif.execute({development: true, dir: __dirname})
+})()
diff --git a/templates/cli/commonjs/bin/run.cmd.ejs b/templates/cli/commonjs/bin/run.cmd.ejs
new file mode 100644
index 000000000..968fc3075
--- /dev/null
+++ b/templates/cli/commonjs/bin/run.cmd.ejs
@@ -0,0 +1,3 @@
+@echo off
+
+node "%~dp0\run" %*
diff --git a/templates/cli/commonjs/bin/run.js.ejs b/templates/cli/commonjs/bin/run.js.ejs
new file mode 100755
index 000000000..ad5afc7ea
--- /dev/null
+++ b/templates/cli/commonjs/bin/run.js.ejs
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+
+// eslint-disable-next-line unicorn/prefer-top-level-await
+(async () => {
+  const oclif = await import('@oclif/core')
+  await oclif.execute({dir: __dirname})
+})()
diff --git a/templates/cli/commonjs/tsconfig.json.ejs b/templates/cli/commonjs/tsconfig.json.ejs
new file mode 100644
index 000000000..d01c414d1
--- /dev/null
+++ b/templates/cli/commonjs/tsconfig.json.ejs
@@ -0,0 +1,11 @@
+{
+  "compilerOptions": {
+    "declaration": true,
+    "module": "commonjs",
+    "outDir": "dist",
+    "rootDir": "src",
+    "strict": true,
+    "target": "es2022"
+  },
+  "include": ["src/**/*"]
+}
diff --git a/templates/cli/esm/.mocharc.json.ejs b/templates/cli/esm/.mocharc.json.ejs
new file mode 100644
index 000000000..fa25f207e
--- /dev/null
+++ b/templates/cli/esm/.mocharc.json.ejs
@@ -0,0 +1,15 @@
+{
+  "require": [
+    "ts-node/register"
+  ],
+  "watch-extensions": [
+    "ts"
+  ],
+  "recursive": true,
+  "reporter": "spec",
+  "timeout": 60000,
+  "node-option": [
+    "loader=ts-node/esm",
+    "experimental-specifier-resolution=node"
+  ]
+}
diff --git a/templates/cli/esm/.vscode/launch.json.ejs b/templates/cli/esm/.vscode/launch.json.ejs
new file mode 100644
index 000000000..b4ac0dac9
--- /dev/null
+++ b/templates/cli/esm/.vscode/launch.json.ejs
@@ -0,0 +1,22 @@
+{
+  "version": "0.2.0",
+  "configurations": [
+    {
+      "type": "node",
+      "request": "attach",
+      "name": "Attach",
+      "port": 9229,
+      "skipFiles": ["<node_internals>/**"]
+    },
+    {
+      "type": "node",
+      "request": "launch",
+      "name": "Execute Command",
+      "skipFiles": ["<node_internals>/**"],
+      "runtimeExecutable": "node",
+      "runtimeArgs": ["--loader", "ts-node/esm", "--no-warnings=ExperimentalWarning"],
+      "program": "${workspaceFolder}/bin/dev.js",
+      "args": ["hello", "world"]
+    }
+  ]
+}
diff --git a/templates/cli/esm/bin/dev.cmd.ejs b/templates/cli/esm/bin/dev.cmd.ejs
new file mode 100644
index 000000000..cec553be4
--- /dev/null
+++ b/templates/cli/esm/bin/dev.cmd.ejs
@@ -0,0 +1,3 @@
+@echo off
+
+node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
diff --git a/templates/cli/esm/bin/dev.js.ejs b/templates/cli/esm/bin/dev.js.ejs
new file mode 100755
index 000000000..dd7480483
--- /dev/null
+++ b/templates/cli/esm/bin/dev.js.ejs
@@ -0,0 +1,6 @@
+#!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning
+
+// eslint-disable-next-line n/shebang
+import {execute} from '@oclif/core'
+
+await execute({development: true, dir: import.meta.url})
diff --git a/templates/cli/esm/bin/run.cmd.ejs b/templates/cli/esm/bin/run.cmd.ejs
new file mode 100644
index 000000000..968fc3075
--- /dev/null
+++ b/templates/cli/esm/bin/run.cmd.ejs
@@ -0,0 +1,3 @@
+@echo off
+
+node "%~dp0\run" %*
diff --git a/templates/cli/esm/bin/run.js.ejs b/templates/cli/esm/bin/run.js.ejs
new file mode 100755
index 000000000..dd50271f4
--- /dev/null
+++ b/templates/cli/esm/bin/run.js.ejs
@@ -0,0 +1,5 @@
+#!/usr/bin/env node
+
+import {execute} from '@oclif/core'
+
+await execute({dir: import.meta.url})
diff --git a/templates/cli/esm/tsconfig.json.ejs b/templates/cli/esm/tsconfig.json.ejs
new file mode 100644
index 000000000..e144b788c
--- /dev/null
+++ b/templates/cli/esm/tsconfig.json.ejs
@@ -0,0 +1,15 @@
+{
+  "compilerOptions": {
+    "declaration": true,
+    "module": "Node16",
+    "outDir": "dist",
+    "rootDir": "src",
+    "strict": true,
+    "target": "es2022",
+    "moduleResolution": "node16"
+  },
+  "include": ["./src/**/*"],
+  "ts-node": {
+    "esm": true
+  }
+}
diff --git a/templates/cli/shared/.eslintignore.ejs b/templates/cli/shared/.eslintignore.ejs
new file mode 100644
index 000000000..9b1c8b133
--- /dev/null
+++ b/templates/cli/shared/.eslintignore.ejs
@@ -0,0 +1 @@
+/dist
diff --git a/templates/cli/shared/.eslintrc.json.ejs b/templates/cli/shared/.eslintrc.json.ejs
new file mode 100644
index 000000000..1dfcfc414
--- /dev/null
+++ b/templates/cli/shared/.eslintrc.json.ejs
@@ -0,0 +1,3 @@
+{
+  "extends": ["oclif", "oclif-typescript", "prettier"]
+}
diff --git a/templates/cli/shared/.github/workflows/onPushToMain.yml.ejs b/templates/cli/shared/.github/workflows/onPushToMain.yml.ejs
new file mode 100644
index 000000000..1245f1c54
--- /dev/null
+++ b/templates/cli/shared/.github/workflows/onPushToMain.yml.ejs
@@ -0,0 +1,56 @@
+# test
+name: version, tag and github release
+
+on:
+  push:
+    branches: [main]
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
+      - name: Check if version already exists
+        id: version-check
+        run: |
+          package_version=$(node -p "require('./package.json').version")
+          exists=$(gh api repos/${{ github.repository }}/releases/tags/v$package_version >/dev/null 2>&1 && echo "true" || echo "")
+
+          if [ -n "$exists" ];
+          then
+            echo "Version v$package_version already exists"
+            echo "::warning file=package.json,line=1::Version v$package_version already exists - no release will be created. If you want to create a new release, please update the version in package.json and push again."
+            echo "skipped=true" >> $GITHUB_OUTPUT
+          else
+            echo "Version v$package_version does not exist. Creating release..."
+            echo "skipped=false" >> $GITHUB_OUTPUT
+            echo "tag=v$package_version" >> $GITHUB_OUTPUT
+          fi
+        env:
+          GH_TOKEN: ${{ secrets.GH_TOKEN }}
+      - name: Setup git
+        if: ${{ steps.version-check.outputs.skipped == 'false' }}
+        run: |
+          git config --global user.email ${{ secrets.GH_EMAIL }}
+          git config --global user.name ${{ secrets.GH_USERNAME }}
+      - name: Generate oclif README
+        if: ${{ steps.version-check.outputs.skipped == 'false' }}
+        id: oclif-readme
+        run: |
+          <%- install %>
+          <%- exec %> oclif readme
+          if [ -n "$(git status --porcelain)" ]; then
+            git add .
+            git commit -am "chore: update README.md"
+            git push -u origin ${{ github.ref_name }}
+          fi
+      - name: Create Github Release
+        uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5
+        if: ${{ steps.version-check.outputs.skipped == 'false' }}
+        with:
+          name: ${{ steps.version-check.outputs.tag }}
+          tag: ${{ steps.version-check.outputs.tag }}
+          commit: ${{ github.ref_name }}
+          token: ${{ secrets.GH_TOKEN }}
+          skipIfReleaseExists: true
diff --git a/templates/cli/shared/.github/workflows/onRelease.yml.ejs b/templates/cli/shared/.github/workflows/onRelease.yml.ejs
new file mode 100644
index 000000000..20aedf14f
--- /dev/null
+++ b/templates/cli/shared/.github/workflows/onRelease.yml.ejs
@@ -0,0 +1,18 @@
+name: publish
+
+on:
+  release:
+    types: [released]
+
+jobs:
+  publish:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
+        with:
+          node-version: latest
+      - run: <%- install %>
+      - uses: JS-DevTools/npm-publish@19c28f1ef146469e409470805ea4279d47c3d35c
+        with:
+          token: ${{ secrets.NPM_TOKEN }}
diff --git a/templates/cli/shared/.github/workflows/test.yml.ejs b/templates/cli/shared/.github/workflows/test.yml.ejs
new file mode 100644
index 000000000..639d709d5
--- /dev/null
+++ b/templates/cli/shared/.github/workflows/test.yml.ejs
@@ -0,0 +1,23 @@
+name: tests
+on:
+  push:
+    branches-ignore: [main]
+  workflow_dispatch:
+
+jobs:
+  unit-tests:
+    strategy:
+      matrix:
+        os: ['ubuntu-latest', 'windows-latest']
+        node_version: [lts/-1, lts/*, latest]
+      fail-fast: false
+    runs-on: ${{ matrix.os }}
+    steps:
+      - uses: actions/checkout@v4
+      - uses: actions/setup-node@v4
+        with:
+          node-version: ${{ matrix.node_version }}
+          cache: <%- packageManager %>
+      - run: <%- install %>
+      - run: <%- run %> build
+      - run: <%- run %> test
diff --git a/templates/cli/shared/.gitignore.ejs b/templates/cli/shared/.gitignore.ejs
new file mode 100644
index 000000000..ae0bf5d99
--- /dev/null
+++ b/templates/cli/shared/.gitignore.ejs
@@ -0,0 +1,27 @@
+*-debug.log
+*-error.log
+**/.DS_Store
+/.idea
+/dist
+/tmp
+/node_modules
+oclif.manifest.json
+<% if (packageManager === 'yarn') { %>
+package-lock.json
+pnpm-lock.yaml
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
+<% } %>
+<% if (packageManager === 'pnpm') { %>
+yarn.lock
+package-lock.json
+<% } %>
+<% if (packageManager === 'npm') { %>
+yarn.lock
+pnpm-lock.yaml
+<% } %>
diff --git a/templates/cli/shared/.prettierrc.json.ejs b/templates/cli/shared/.prettierrc.json.ejs
new file mode 100644
index 000000000..631433570
--- /dev/null
+++ b/templates/cli/shared/.prettierrc.json.ejs
@@ -0,0 +1 @@
+"@oclif/prettier-config"
diff --git a/templates/cli/shared/README.md.ejs b/templates/cli/shared/README.md.ejs
new file mode 100644
index 000000000..fb027db76
--- /dev/null
+++ b/templates/cli/shared/README.md.ejs
@@ -0,0 +1,396 @@
+<%- name %>
+=================
+
+<%- description %>
+
+
+[![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
+[![Version](https://img.shields.io/npm/v/<%- name %>.svg)](https://npmjs.org/package/<%- name %>)
+[![Downloads/week](https://img.shields.io/npm/dw/<%- name %>.svg)](https://npmjs.org/package/<%- name %>)
+
+
+<!-- toc -->
+* [Usage](#usage)
+* [Commands](#commands)
+<!-- tocstop -->
+# Usage
+<!-- usage -->
+```sh-session
+$ npm install -g mycli123
+$ mycli123 COMMAND
+running command...
+$ mycli123 (--version)
+mycli123/0.0.0 darwin-arm64 node-v20.12.2
+$ mycli123 --help [COMMAND]
+USAGE
+  $ mycli123 COMMAND
+...
+```
+<!-- usagestop -->
+# Commands
+<!-- commands -->
+* [`mycli123 hello PERSON`](#mycli123-hello-person)
+* [`mycli123 hello world`](#mycli123-hello-world)
+* [`mycli123 help [COMMAND]`](#mycli123-help-command)
+* [`mycli123 plugins`](#mycli123-plugins)
+* [`mycli123 plugins add PLUGIN`](#mycli123-plugins-add-plugin)
+* [`mycli123 plugins:inspect PLUGIN...`](#mycli123-pluginsinspect-plugin)
+* [`mycli123 plugins install PLUGIN`](#mycli123-plugins-install-plugin)
+* [`mycli123 plugins link PATH`](#mycli123-plugins-link-path)
+* [`mycli123 plugins remove [PLUGIN]`](#mycli123-plugins-remove-plugin)
+* [`mycli123 plugins reset`](#mycli123-plugins-reset)
+* [`mycli123 plugins uninstall [PLUGIN]`](#mycli123-plugins-uninstall-plugin)
+* [`mycli123 plugins unlink [PLUGIN]`](#mycli123-plugins-unlink-plugin)
+* [`mycli123 plugins update`](#mycli123-plugins-update)
+
+## `mycli123 hello PERSON`
+
+Say hello
+
+```
+USAGE
+  $ mycli123 hello PERSON -f <value>
+
+ARGUMENTS
+  PERSON  Person to say hello to
+
+FLAGS
+  -f, --from=<value>  (required) Who is saying hello
+
+DESCRIPTION
+  Say hello
+
+EXAMPLES
+  $ mycli123 hello friend --from oclif
+  hello friend from oclif! (./src/commands/hello/index.ts)
+```
+
+_See code: [src/commands/hello/index.ts](https://github.com/mdonnalley/mycli123/blob/v0.0.0/src/commands/hello/index.ts)_
+
+## `mycli123 hello world`
+
+Say hello world
+
+```
+USAGE
+  $ mycli123 hello world
+
+DESCRIPTION
+  Say hello world
+
+EXAMPLES
+  $ mycli123 hello world
+  hello world! (./src/commands/hello/world.ts)
+```
+
+_See code: [src/commands/hello/world.ts](https://github.com/mdonnalley/mycli123/blob/v0.0.0/src/commands/hello/world.ts)_
+
+## `mycli123 help [COMMAND]`
+
+Display help for mycli123.
+
+```
+USAGE
+  $ mycli123 help [COMMAND...] [-n]
+
+ARGUMENTS
+  COMMAND...  Command to show help for.
+
+FLAGS
+  -n, --nested-commands  Include all nested commands in the output.
+
+DESCRIPTION
+  Display help for mycli123.
+```
+
+_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.0.21/src/commands/help.ts)_
+
+## `mycli123 plugins`
+
+List installed plugins.
+
+```
+USAGE
+  $ mycli123 plugins [--json] [--core]
+
+FLAGS
+  --core  Show core plugins.
+
+GLOBAL FLAGS
+  --json  Format output as json.
+
+DESCRIPTION
+  List installed plugins.
+
+EXAMPLES
+  $ mycli123 plugins
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/index.ts)_
+
+## `mycli123 plugins add PLUGIN`
+
+Installs a plugin into mycli123.
+
+```
+USAGE
+  $ mycli123 plugins add PLUGIN... [--json] [-f] [-h] [-s | -v]
+
+ARGUMENTS
+  PLUGIN...  Plugin to install.
+
+FLAGS
+  -f, --force    Force npm to fetch remote resources even if a local copy exists on disk.
+  -h, --help     Show CLI help.
+  -s, --silent   Silences npm output.
+  -v, --verbose  Show verbose npm output.
+
+GLOBAL FLAGS
+  --json  Format output as json.
+
+DESCRIPTION
+  Installs a plugin into mycli123.
+
+  Uses bundled npm executable to install plugins into /Users/mdonnalley/.local/share/mycli123
+
+  Installation of a user-installed plugin will override a core plugin.
+
+  Use the MYCLI123_NPM_LOG_LEVEL environment variable to set the npm loglevel.
+  Use the MYCLI123_NPM_REGISTRY environment variable to set the npm registry.
+
+ALIASES
+  $ mycli123 plugins add
+
+EXAMPLES
+  Install a plugin from npm registry.
+
+    $ mycli123 plugins add myplugin
+
+  Install a plugin from a github url.
+
+    $ mycli123 plugins add https://github.com/someuser/someplugin
+
+  Install a plugin from a github slug.
+
+    $ mycli123 plugins add someuser/someplugin
+```
+
+## `mycli123 plugins:inspect PLUGIN...`
+
+Displays installation properties of a plugin.
+
+```
+USAGE
+  $ mycli123 plugins inspect PLUGIN...
+
+ARGUMENTS
+  PLUGIN...  [default: .] Plugin to inspect.
+
+FLAGS
+  -h, --help     Show CLI help.
+  -v, --verbose
+
+GLOBAL FLAGS
+  --json  Format output as json.
+
+DESCRIPTION
+  Displays installation properties of a plugin.
+
+EXAMPLES
+  $ mycli123 plugins inspect myplugin
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/inspect.ts)_
+
+## `mycli123 plugins install PLUGIN`
+
+Installs a plugin into mycli123.
+
+```
+USAGE
+  $ mycli123 plugins install PLUGIN... [--json] [-f] [-h] [-s | -v]
+
+ARGUMENTS
+  PLUGIN...  Plugin to install.
+
+FLAGS
+  -f, --force    Force npm to fetch remote resources even if a local copy exists on disk.
+  -h, --help     Show CLI help.
+  -s, --silent   Silences npm output.
+  -v, --verbose  Show verbose npm output.
+
+GLOBAL FLAGS
+  --json  Format output as json.
+
+DESCRIPTION
+  Installs a plugin into mycli123.
+
+  Uses bundled npm executable to install plugins into /Users/mdonnalley/.local/share/mycli123
+
+  Installation of a user-installed plugin will override a core plugin.
+
+  Use the MYCLI123_NPM_LOG_LEVEL environment variable to set the npm loglevel.
+  Use the MYCLI123_NPM_REGISTRY environment variable to set the npm registry.
+
+ALIASES
+  $ mycli123 plugins add
+
+EXAMPLES
+  Install a plugin from npm registry.
+
+    $ mycli123 plugins install myplugin
+
+  Install a plugin from a github url.
+
+    $ mycli123 plugins install https://github.com/someuser/someplugin
+
+  Install a plugin from a github slug.
+
+    $ mycli123 plugins install someuser/someplugin
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/install.ts)_
+
+## `mycli123 plugins link PATH`
+
+Links a plugin into the CLI for development.
+
+```
+USAGE
+  $ mycli123 plugins link PATH [-h] [--install] [-v]
+
+ARGUMENTS
+  PATH  [default: .] path to plugin
+
+FLAGS
+  -h, --help          Show CLI help.
+  -v, --verbose
+      --[no-]install  Install dependencies after linking the plugin.
+
+DESCRIPTION
+  Links a plugin into the CLI for development.
+  Installation of a linked plugin will override a user-installed or core plugin.
+
+  e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'
+  command will override the user-installed or core plugin implementation. This is useful for development work.
+
+
+EXAMPLES
+  $ mycli123 plugins link myplugin
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/link.ts)_
+
+## `mycli123 plugins remove [PLUGIN]`
+
+Removes a plugin from the CLI.
+
+```
+USAGE
+  $ mycli123 plugins remove [PLUGIN...] [-h] [-v]
+
+ARGUMENTS
+  PLUGIN...  plugin to uninstall
+
+FLAGS
+  -h, --help     Show CLI help.
+  -v, --verbose
+
+DESCRIPTION
+  Removes a plugin from the CLI.
+
+ALIASES
+  $ mycli123 plugins unlink
+  $ mycli123 plugins remove
+
+EXAMPLES
+  $ mycli123 plugins remove myplugin
+```
+
+## `mycli123 plugins reset`
+
+Remove all user-installed and linked plugins.
+
+```
+USAGE
+  $ mycli123 plugins reset [--hard] [--reinstall]
+
+FLAGS
+  --hard       Delete node_modules and package manager related files in addition to uninstalling plugins.
+  --reinstall  Reinstall all plugins after uninstalling.
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/reset.ts)_
+
+## `mycli123 plugins uninstall [PLUGIN]`
+
+Removes a plugin from the CLI.
+
+```
+USAGE
+  $ mycli123 plugins uninstall [PLUGIN...] [-h] [-v]
+
+ARGUMENTS
+  PLUGIN...  plugin to uninstall
+
+FLAGS
+  -h, --help     Show CLI help.
+  -v, --verbose
+
+DESCRIPTION
+  Removes a plugin from the CLI.
+
+ALIASES
+  $ mycli123 plugins unlink
+  $ mycli123 plugins remove
+
+EXAMPLES
+  $ mycli123 plugins uninstall myplugin
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/uninstall.ts)_
+
+## `mycli123 plugins unlink [PLUGIN]`
+
+Removes a plugin from the CLI.
+
+```
+USAGE
+  $ mycli123 plugins unlink [PLUGIN...] [-h] [-v]
+
+ARGUMENTS
+  PLUGIN...  plugin to uninstall
+
+FLAGS
+  -h, --help     Show CLI help.
+  -v, --verbose
+
+DESCRIPTION
+  Removes a plugin from the CLI.
+
+ALIASES
+  $ mycli123 plugins unlink
+  $ mycli123 plugins remove
+
+EXAMPLES
+  $ mycli123 plugins unlink myplugin
+```
+
+## `mycli123 plugins update`
+
+Update installed plugins.
+
+```
+USAGE
+  $ mycli123 plugins update [-h] [-v]
+
+FLAGS
+  -h, --help     Show CLI help.
+  -v, --verbose
+
+DESCRIPTION
+  Update installed plugins.
+```
+
+_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.0.16/src/commands/plugins/update.ts)_
+<!-- commandsstop -->
diff --git a/templates/cli/shared/package.json.ejs b/templates/cli/shared/package.json.ejs
new file mode 100644
index 000000000..25cb4b758
--- /dev/null
+++ b/templates/cli/shared/package.json.ejs
@@ -0,0 +1,73 @@
+{
+  "name": "<%- name %>",
+  "description": "<%- description %>",
+  "version": "0.0.0",
+  "author": "<%- author %>",
+  "bin": {
+    "<%- bin %>": "./bin/run.js"
+  },
+  "bugs": "https://github.com/<%- owner %>/<%- repository %>/issues",
+  "dependencies": {
+    "@oclif/core": "^4",
+    "@oclif/plugin-help": "^6",
+    "@oclif/plugin-plugins": "^5"
+  },
+  "devDependencies": {
+    "@oclif/prettier-config": "^0.2.1",
+    "@oclif/test": "^4",
+    "@types/chai": "^4",
+    "@types/mocha": "^10",
+    "@types/node": "^18",
+    "chai": "^4",
+    "eslint": "^8",
+    "eslint-config-oclif": "^5",
+    "eslint-config-oclif-typescript": "^3",
+    "eslint-config-prettier": "^9",
+    "mocha": "^10",
+    "oclif": "^4",
+    "shx": "^0.3.3",
+    "ts-node": "^10",
+    "typescript": "^5"
+  },
+  "engines": {
+    "node": ">=18.0.0"
+  },
+  "files": [
+    "/bin",
+    "/dist",
+    "/oclif.manifest.json"
+  ],
+  "homepage": "https://github.com/<%- owner %>/<%- repository %>",
+  "keywords": [
+    "oclif"
+  ],
+  "license": "<%- license %>",
+  "main": "dist/index.js",
+  <% if (moduleType == 'ESM') { %>"type": "module",<% } %>
+  "oclif": {
+    "bin": "<%- bin %>",
+    "dirname": "<%- bin %>",
+    "commands": "./dist/commands",
+    "plugins": [
+      "@oclif/plugin-help",
+      "@oclif/plugin-plugins"
+    ],
+    "topicSeparator": " ",
+    "topics": {
+      "hello": {
+        "description": "Say hello to the world and others"
+      }
+    }
+  },
+  "repository": "<%- owner %>/<%- repository %>",
+  "scripts": {
+    "build": "shx rm -rf dist && tsc -b",
+    "lint": "eslint . --ext .ts",
+    "postpack": "shx rm -f oclif.manifest.json",
+    "posttest": "<%- pkgManagerScript %> lint",
+    "prepack": "oclif manifest && oclif readme",
+    "test": "mocha --forbid-only \"test/**/*.test.ts\"",
+    "version": "oclif readme && git add README.md"
+  },
+  "types": "dist/index.d.ts"
+}
diff --git a/templates/cli/shared/src/commands/hello/index.ts.ejs b/templates/cli/shared/src/commands/hello/index.ts.ejs
new file mode 100644
index 000000000..8eed1aab7
--- /dev/null
+++ b/templates/cli/shared/src/commands/hello/index.ts.ejs
@@ -0,0 +1,25 @@
+import {Args, Command, Flags} from '@oclif/core'
+
+export default class Hello extends Command {
+  static args = {
+    person: Args.string({description: 'Person to say hello to', required: true}),
+  }
+
+  static description = 'Say hello'
+
+  static examples = [
+    `<%%= config.bin %> <%%= command.id %> friend --from oclif
+hello friend from oclif! (./src/commands/hello/index.ts)
+`,
+  ]
+
+  static flags = {
+    from: Flags.string({char: 'f', description: 'Who is saying hello', required: true}),
+  }
+
+  async run(): Promise<void> {
+    const {args, flags} = await this.parse(Hello)
+
+    this.log(`hello ${args.person} from ${flags.from}! (./src/commands/hello/index.ts)`)
+  }
+}
diff --git a/templates/cli/shared/src/commands/hello/world.ts.ejs b/templates/cli/shared/src/commands/hello/world.ts.ejs
new file mode 100644
index 000000000..172a9d02f
--- /dev/null
+++ b/templates/cli/shared/src/commands/hello/world.ts.ejs
@@ -0,0 +1,19 @@
+import {Command} from '@oclif/core'
+
+export default class World extends Command {
+  static args = {}
+
+  static description = 'Say hello world'
+
+  static examples = [
+    `<%%= config.bin %> <%%= command.id %>
+hello world! (./src/commands/hello/world.ts)
+`,
+  ]
+
+  static flags = {}
+
+  async run(): Promise<void> {
+    this.log('hello world! (./src/commands/hello/world.ts)')
+  }
+}
diff --git a/templates/cli/shared/src/index.ts.ejs b/templates/cli/shared/src/index.ts.ejs
new file mode 100644
index 000000000..e32b0b2e5
--- /dev/null
+++ b/templates/cli/shared/src/index.ts.ejs
@@ -0,0 +1 @@
+export {run} from '@oclif/core'
diff --git a/templates/cli/shared/test/commands/hello/index.test.ts.ejs b/templates/cli/shared/test/commands/hello/index.test.ts.ejs
new file mode 100644
index 000000000..dad0ac3f4
--- /dev/null
+++ b/templates/cli/shared/test/commands/hello/index.test.ts.ejs
@@ -0,0 +1,9 @@
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+
+describe('hello', () => {
+  it('runs hello', async () => {
+    const {stdout} = await runCommand('hello friend --from oclif')
+    expect(stdout).to.contain('hello friend from oclif!')
+  })
+})
diff --git a/templates/cli/shared/test/commands/hello/world.test.ts.ejs b/templates/cli/shared/test/commands/hello/world.test.ts.ejs
new file mode 100644
index 000000000..0f5e90f0b
--- /dev/null
+++ b/templates/cli/shared/test/commands/hello/world.test.ts.ejs
@@ -0,0 +1,9 @@
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+
+describe('hello world', () => {
+  it('runs hello world cmd', async () => {
+    const {stdout} = await runCommand('hello world')
+    expect(stdout).to.contain('hello world!')
+  })
+})
diff --git a/templates/cli/shared/test/tsconfig.json.ejs b/templates/cli/shared/test/tsconfig.json.ejs
new file mode 100644
index 000000000..95898fced
--- /dev/null
+++ b/templates/cli/shared/test/tsconfig.json.ejs
@@ -0,0 +1,9 @@
+{
+  "extends": "../tsconfig",
+  "compilerOptions": {
+    "noEmit": true
+  },
+  "references": [
+    {"path": ".."}
+  ]
+}
diff --git a/templates/src/command.ts.ejs b/templates/src/command.ts.ejs
index 0b68d3244..c6dc06dc2 100644
--- a/templates/src/command.ts.ejs
+++ b/templates/src/command.ts.ejs
@@ -1,26 +1,25 @@
 import {Args, Command, Flags} from '@oclif/core'
-<%_ const klass = _.upperFirst(_.camelCase(name)) _%>
 
-export default class <%- klass %> extends Command {
-  static description = 'describe the command here'
+export default class <%- className %> extends Command {
+  static override args = {
+    file: Args.string({description: 'file to read'}),
+  }
+
+  static override description = 'describe the command here'
 
-  static examples = [
+  static override examples = [
     '<%%= config.bin %> <%%= command.id %>',
   ]
 
-  static flags = {
-    // flag with a value (-n, --name=VALUE)
-    name: Flags.string({char: 'n', description: 'name to print'}),
+  static override flags = {
     // flag with no value (-f, --force)
     force: Flags.boolean({char: 'f'}),
-  }
-
-  static args = {
-    file: Args.string({description: 'file to read'}),
+    // flag with a value (-n, --name=VALUE)
+    name: Flags.string({char: 'n', description: 'name to print'}),
   }
 
   public async run(): Promise<void> {
-    const {args, flags} = await this.parse(<%- klass %>)
+    const {args, flags} = await this.parse(<%- className %>)
 
     const name = flags.name ?? 'world'
     this.log(`hello ${name} from <%- path.replace(/\\/g, '\\\\') %>`)
diff --git a/templates/src/hook.ts.ejs b/templates/src/hook.ts.ejs
index 70d86994f..7bc989480 100644
--- a/templates/src/hook.ts.ejs
+++ b/templates/src/hook.ts.ejs
@@ -1,6 +1,6 @@
 import {Hook} from '@oclif/core'
 
-const hook: Hook<'<%- options.event %>'> = async function (opts) {
+const hook: Hook<'<%- event %>'> = async function (opts) {
   process.stdout.write(`example hook running ${opts.id}\n`)
 }
 
diff --git a/templates/src/init/dev.cmd.ejs b/templates/src/init/dev.cmd.ejs
new file mode 100644
index 000000000..030fc8258
--- /dev/null
+++ b/templates/src/init/dev.cmd.ejs
@@ -0,0 +1,12 @@
+<% switch (moduleType) {
+  case 'ESM' : _%>
+@echo off
+
+node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
+          <%_ break;
+  case 'CommonJS' : _%>
+@echo off
+
+node "%~dp0\dev" %*
+          <%_ break;
+  } _%>
\ No newline at end of file
diff --git a/templates/src/init/dev.js.ejs b/templates/src/init/dev.js.ejs
new file mode 100644
index 000000000..98d102757
--- /dev/null
+++ b/templates/src/init/dev.js.ejs
@@ -0,0 +1,17 @@
+<% switch (moduleType) {
+  case 'ESM' : _%>
+#!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
+
+import {execute} from '@oclif/core'
+await execute({development: true, dir: import.meta.url})
+          <%_ break;
+  case 'CommonJS' : _%>
+#!/usr/bin/env node_modules/.bin/ts-node
+
+// eslint-disable-next-line node/shebang, unicorn/prefer-top-level-await
+(async () => {
+  const oclif = await import('@oclif/core')
+  await oclif.execute({development: true, dir: __dirname})
+})()
+          <%_ break;
+  } _%>
\ No newline at end of file
diff --git a/templates/src/init/run.cmd.ejs b/templates/src/init/run.cmd.ejs
new file mode 100644
index 000000000..cf40b543c
--- /dev/null
+++ b/templates/src/init/run.cmd.ejs
@@ -0,0 +1,3 @@
+@echo off
+
+node "%~dp0\run" %*
\ No newline at end of file
diff --git a/templates/src/init/run.js.ejs b/templates/src/init/run.js.ejs
new file mode 100644
index 000000000..73566bd74
--- /dev/null
+++ b/templates/src/init/run.js.ejs
@@ -0,0 +1,17 @@
+<% switch (moduleType) {
+  case 'ESM' : _%>
+#!/usr/bin/env node
+
+import {execute} from '@oclif/core'
+await execute({dir: import.meta.url})
+          <%_ break;
+  case 'CommonJS' : _%>
+#!/usr/bin/env node
+
+// eslint-disable-next-line unicorn/prefer-top-level-await
+(async () => {
+  const oclif = await import('@oclif/core')
+  await oclif.execute({development: false, dir: __dirname})
+})()
+          <%_ break;
+  } _%>
\ No newline at end of file
diff --git a/templates/test/command.test.ts.ejs b/templates/test/command.test.ts.ejs
index ff8766762..88ae35cc4 100644
--- a/templates/test/command.test.ts.ejs
+++ b/templates/test/command.test.ts.ejs
@@ -1,17 +1,14 @@
-import {expect, test} from '@oclif/test'
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
 
 describe('<%- name %>', () => {
-  test
-  .stdout()
-  .command(['<%- name %>'])
-  .it('runs hello', ctx => {
-    expect(ctx.stdout).to.contain('hello world')
+  it('runs <%- name %> cmd', async () => {
+    const {stdout} = await runCommand('<%- name %>')
+    expect(stdout).to.contain('hello world')
   })
 
-  test
-  .stdout()
-  .command(['<%- name %>', '--name', 'jeff'])
-  .it('runs hello --name jeff', ctx => {
-    expect(ctx.stdout).to.contain('hello jeff')
+  it('runs <%- name %> --name oclif', async () => {
+    const {stdout} = await runCommand('<%- name %> --name oclif')
+    expect(stdout).to.contain('hello oclif')
   })
 })
diff --git a/templates/test/hook.test.ts.ejs b/templates/test/hook.test.ts.ejs
index 28fb6c936..4dc2869c8 100644
--- a/templates/test/hook.test.ts.ejs
+++ b/templates/test/hook.test.ts.ejs
@@ -1,9 +1,9 @@
-import {expect, test} from '@oclif/test'
+import {runHook} from '@oclif/test'
+import {expect} from 'chai'
 
 describe('hooks', () => {
-  test
-  .stdout()
-  .hook('init', {id: 'mycommand'})
-  .do(output => expect(output.stdout).to.contain('example hook running mycommand'))
-  .it('shows a message')
+  it('shows a message', async () => {
+    const {stdout} = await runHook('init', {id: 'mycommand'})
+    expect(stdout).to.contain('example hook running mycommand')
+  })
 })
diff --git a/test/.eslintrc.json b/test/.eslintrc.json
new file mode 100644
index 000000000..43284ce5e
--- /dev/null
+++ b/test/.eslintrc.json
@@ -0,0 +1,10 @@
+{
+  "extends": "../.eslintrc.json",
+  "rules": {
+    "unicorn/consistent-function-scoping": "off",
+    "@typescript-eslint/no-empty-function": "off",
+    "@typescript-eslint/ban-ts-ignore": "off",
+    "@typescript-eslint/ban-ts-comment": "off",
+    "sort-imports": "off"
+  }
+}
diff --git a/test/commands/generate.test.js b/test/commands/generate.test.js
deleted file mode 100644
index 695ac67fa..000000000
--- a/test/commands/generate.test.js
+++ /dev/null
@@ -1 +0,0 @@
-require('../run')(module.filename)
diff --git a/test/commands/generate/command.test.js b/test/commands/generate/command.test.js
deleted file mode 100644
index 30c30f3ad..000000000
--- a/test/commands/generate/command.test.js
+++ /dev/null
@@ -1 +0,0 @@
-require('../../run')(module.filename)
diff --git a/test/commands/generate/hook.test.js b/test/commands/generate/hook.test.js
deleted file mode 100644
index 30c30f3ad..000000000
--- a/test/commands/generate/hook.test.js
+++ /dev/null
@@ -1 +0,0 @@
-require('../../run')(module.filename)
diff --git a/test/fixtures/cli-command-with-alias/src/commands/hello.ts b/test/fixtures/cli-command-with-alias/src/commands/hello.ts
index ea48c59de..d110f0cbd 100644
--- a/test/fixtures/cli-command-with-alias/src/commands/hello.ts
+++ b/test/fixtures/cli-command-with-alias/src/commands/hello.ts
@@ -1,12 +1,13 @@
+// eslint-disable-next-line node/no-extraneous-import
 import {Command} from '@oclif/core'
 
 export default class Hello extends Command {
+  static aliases = ['hi']
+
   static description = 'a simple command'
 
   static flags = {}
 
-  static aliases = ['hi']
-
   async run(): Promise<void> {
     this.log('hello world')
   }
diff --git a/test/fixtures/cli-command-with-alias/src/help.ts b/test/fixtures/cli-command-with-alias/src/help.ts
index d3c75e3bf..d57cbe6be 100644
--- a/test/fixtures/cli-command-with-alias/src/help.ts
+++ b/test/fixtures/cli-command-with-alias/src/help.ts
@@ -1,7 +1,8 @@
-import {Interfaces, Help} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Command, Help} from '@oclif/core'
 
 export default class CustomHelp extends Help {
-  formatCommand(command: Interfaces.Command): string {
+  formatCommand(command: Command.Class): string {
     return `Custom help for ${command.id}`
   }
 }
diff --git a/test/fixtures/cli-command-with-alias/src/index.ts b/test/fixtures/cli-command-with-alias/src/index.ts
index e32b0b2e5..e69de29bb 100644
--- a/test/fixtures/cli-command-with-alias/src/index.ts
+++ b/test/fixtures/cli-command-with-alias/src/index.ts
@@ -1 +0,0 @@
-export {run} from '@oclif/core'
diff --git a/test/fixtures/cli-command-with-alias/tsconfig.json b/test/fixtures/cli-command-with-alias/tsconfig.json
index b4c5d7686..75eeb316a 100644
--- a/test/fixtures/cli-command-with-alias/tsconfig.json
+++ b/test/fixtures/cli-command-with-alias/tsconfig.json
@@ -8,7 +8,5 @@
     "strict": true,
     "target": "es2017"
   },
-  "include": [
-    "src/**/*"
-  ]
+  "include": ["src/**/*"]
 }
diff --git a/test/fixtures/cli-with-custom-help-no-format-command/src/commands/hello.ts b/test/fixtures/cli-with-custom-help-no-format-command/src/commands/hello.ts
index 076bb3450..00a47e4af 100644
--- a/test/fixtures/cli-with-custom-help-no-format-command/src/commands/hello.ts
+++ b/test/fixtures/cli-with-custom-help-no-format-command/src/commands/hello.ts
@@ -1,6 +1,11 @@
-import {Command, Flags} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Args, Command, Flags} from '@oclif/core'
 
 export default class Hello extends Command {
+  static args = {
+    file: Args.string(),
+  }
+
   static description = 'describe the command here'
 
   static examples = [
@@ -10,15 +15,13 @@ hello world from ./src/hello.ts!
   ]
 
   static flags = {
+    // flag with no value (-f, --force)
+    force: Flags.boolean({char: 'f'}),
     help: Flags.help({char: 'h'}),
     // flag with a value (-n, --name=VALUE)
     name: Flags.string({char: 'n', description: 'name to print'}),
-    // flag with no value (-f, --force)
-    force: Flags.boolean({char: 'f'}),
   }
 
-  static args = [{name: 'file'}]
-
   async run(): Promise<void> {
     const {args, flags} = await this.parse(Hello)
 
diff --git a/test/fixtures/cli-with-custom-help-no-format-command/src/help.ts b/test/fixtures/cli-with-custom-help-no-format-command/src/help.ts
index 2097a2730..62d0b255e 100644
--- a/test/fixtures/cli-with-custom-help-no-format-command/src/help.ts
+++ b/test/fixtures/cli-with-custom-help-no-format-command/src/help.ts
@@ -1,11 +1,12 @@
-import {Interfaces, HelpBase} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Command, HelpBase} from '@oclif/core'
 
 export default class CustomHelp extends HelpBase {
-  async showHelp(): Promise<void> {
-    console.log('TODO: showHelp')
+  async showCommandHelp(command: Command.Class): Promise<void> {
+    console.log(`Custom help for ${command.id}`)
   }
 
-  async showCommandHelp(command: Interfaces.Command): Promise<void> {
-    console.log(`Custom help for ${command.id}`)
+  async showHelp(): Promise<void> {
+    console.log('TODO: showHelp')
   }
 }
diff --git a/test/fixtures/cli-with-custom-help-no-format-command/src/index.ts b/test/fixtures/cli-with-custom-help-no-format-command/src/index.ts
index e32b0b2e5..e69de29bb 100644
--- a/test/fixtures/cli-with-custom-help-no-format-command/src/index.ts
+++ b/test/fixtures/cli-with-custom-help-no-format-command/src/index.ts
@@ -1 +0,0 @@
-export {run} from '@oclif/core'
diff --git a/test/fixtures/cli-with-custom-help-no-format-command/tsconfig.json b/test/fixtures/cli-with-custom-help-no-format-command/tsconfig.json
index b4c5d7686..75eeb316a 100644
--- a/test/fixtures/cli-with-custom-help-no-format-command/tsconfig.json
+++ b/test/fixtures/cli-with-custom-help-no-format-command/tsconfig.json
@@ -8,7 +8,5 @@
     "strict": true,
     "target": "es2017"
   },
-  "include": [
-    "src/**/*"
-  ]
+  "include": ["src/**/*"]
 }
diff --git a/test/fixtures/cli-with-custom-help/src/commands/hello.ts b/test/fixtures/cli-with-custom-help/src/commands/hello.ts
index 076bb3450..00a47e4af 100644
--- a/test/fixtures/cli-with-custom-help/src/commands/hello.ts
+++ b/test/fixtures/cli-with-custom-help/src/commands/hello.ts
@@ -1,6 +1,11 @@
-import {Command, Flags} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Args, Command, Flags} from '@oclif/core'
 
 export default class Hello extends Command {
+  static args = {
+    file: Args.string(),
+  }
+
   static description = 'describe the command here'
 
   static examples = [
@@ -10,15 +15,13 @@ hello world from ./src/hello.ts!
   ]
 
   static flags = {
+    // flag with no value (-f, --force)
+    force: Flags.boolean({char: 'f'}),
     help: Flags.help({char: 'h'}),
     // flag with a value (-n, --name=VALUE)
     name: Flags.string({char: 'n', description: 'name to print'}),
-    // flag with no value (-f, --force)
-    force: Flags.boolean({char: 'f'}),
   }
 
-  static args = [{name: 'file'}]
-
   async run(): Promise<void> {
     const {args, flags} = await this.parse(Hello)
 
diff --git a/test/fixtures/cli-with-custom-help/src/help.ts b/test/fixtures/cli-with-custom-help/src/help.ts
index d3c75e3bf..d57cbe6be 100644
--- a/test/fixtures/cli-with-custom-help/src/help.ts
+++ b/test/fixtures/cli-with-custom-help/src/help.ts
@@ -1,7 +1,8 @@
-import {Interfaces, Help} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Command, Help} from '@oclif/core'
 
 export default class CustomHelp extends Help {
-  formatCommand(command: Interfaces.Command): string {
+  formatCommand(command: Command.Class): string {
     return `Custom help for ${command.id}`
   }
 }
diff --git a/test/fixtures/cli-with-custom-help/src/index.ts b/test/fixtures/cli-with-custom-help/src/index.ts
index e32b0b2e5..e69de29bb 100644
--- a/test/fixtures/cli-with-custom-help/src/index.ts
+++ b/test/fixtures/cli-with-custom-help/src/index.ts
@@ -1 +0,0 @@
-export {run} from '@oclif/core'
diff --git a/test/fixtures/cli-with-custom-help/tsconfig.json b/test/fixtures/cli-with-custom-help/tsconfig.json
index b4c5d7686..75eeb316a 100644
--- a/test/fixtures/cli-with-custom-help/tsconfig.json
+++ b/test/fixtures/cli-with-custom-help/tsconfig.json
@@ -8,7 +8,5 @@
     "strict": true,
     "target": "es2017"
   },
-  "include": [
-    "src/**/*"
-  ]
+  "include": ["src/**/*"]
 }
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/README.md b/test/fixtures/cli-with-nested-topics-with-space-separator/README.md
new file mode 100644
index 000000000..54d98d88a
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/README.md
@@ -0,0 +1,17 @@
+# cli-command-with-alias
+
+This file is a test for running `oclif-dev readme` with aliases. If the --no-aliases flag
+is passed as a flag, no aliases should be in the README.
+
+<!-- toc -->
+<!-- tocstop -->
+
+# Usage
+
+<!-- usage -->
+<!-- usagestop -->
+
+# Commands
+
+<!-- commands -->
+<!-- commandsstop -->
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/package.json b/test/fixtures/cli-with-nested-topics-with-space-separator/package.json
new file mode 100644
index 000000000..ac3d8e006
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/package.json
@@ -0,0 +1,24 @@
+{
+  "name": "cli-command-with-alias",
+  "files": [
+    "/lib"
+  ],
+  "oclif": {
+    "commands": "./lib/commands",
+    "bin": "oclif",
+    "helpClass": "./lib/help",
+    "topicSeparator": " ",
+    "topics": {
+      "roottopic":{
+          "description": "Root topic description",
+          "hidden":true
+      },
+      "roottopic:subtopic1": {
+        "description": "Subtopic1 description"
+      },
+      "roottopic:subtopic2": {
+        "description": "Subtopic2 description"
+      }
+    }
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/src/commands/roottopic/subtopic1/hello.ts b/test/fixtures/cli-with-nested-topics-with-space-separator/src/commands/roottopic/subtopic1/hello.ts
new file mode 100644
index 000000000..ea48c59de
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/src/commands/roottopic/subtopic1/hello.ts
@@ -0,0 +1,13 @@
+import {Command} from '@oclif/core'
+
+export default class Hello extends Command {
+  static description = 'a simple command'
+
+  static flags = {}
+
+  static aliases = ['hi']
+
+  async run(): Promise<void> {
+    this.log('hello world')
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/src/commands/roottopic/subtopic2/hello.ts b/test/fixtures/cli-with-nested-topics-with-space-separator/src/commands/roottopic/subtopic2/hello.ts
new file mode 100644
index 000000000..ea48c59de
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/src/commands/roottopic/subtopic2/hello.ts
@@ -0,0 +1,13 @@
+import {Command} from '@oclif/core'
+
+export default class Hello extends Command {
+  static description = 'a simple command'
+
+  static flags = {}
+
+  static aliases = ['hi']
+
+  async run(): Promise<void> {
+    this.log('hello world')
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/src/help.ts b/test/fixtures/cli-with-nested-topics-with-space-separator/src/help.ts
new file mode 100644
index 000000000..d3c75e3bf
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/src/help.ts
@@ -0,0 +1,7 @@
+import {Interfaces, Help} from '@oclif/core'
+
+export default class CustomHelp extends Help {
+  formatCommand(command: Interfaces.Command): string {
+    return `Custom help for ${command.id}`
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/src/index.ts b/test/fixtures/cli-with-nested-topics-with-space-separator/src/index.ts
new file mode 100644
index 000000000..e32b0b2e5
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/src/index.ts
@@ -0,0 +1 @@
+export {run} from '@oclif/core'
diff --git a/test/fixtures/cli-with-nested-topics-with-space-separator/tsconfig.json b/test/fixtures/cli-with-nested-topics-with-space-separator/tsconfig.json
new file mode 100644
index 000000000..b4c5d7686
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics-with-space-separator/tsconfig.json
@@ -0,0 +1,14 @@
+{
+  "compilerOptions": {
+    "declaration": true,
+    "importHelpers": true,
+    "module": "commonjs",
+    "outDir": "lib",
+    "rootDir": "src",
+    "strict": true,
+    "target": "es2017"
+  },
+  "include": [
+    "src/**/*"
+  ]
+}
diff --git a/test/fixtures/cli-with-nested-topics/README.md b/test/fixtures/cli-with-nested-topics/README.md
new file mode 100644
index 000000000..fe58df0de
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/README.md
@@ -0,0 +1,41 @@
+# cli-command-with-alias
+
+This file is a test for running `oclif-dev readme` with aliases. If the --no-aliases flag
+is passed as a flag, no aliases should be in the README.
+
+<!-- toc -->
+
+- [cli-command-with-alias](#cli-command-with-alias-1)
+- [Usage](#usage-1)
+- [Commands](#commands-1)
+- [Command Topics](#command-topics-2)
+<!-- tocstop -->
+
+# Usage
+
+<!-- usage -->
+
+```sh-session
+$ npm install -g cli-command-with-alias
+$ oclif COMMAND
+running command...
+$ oclif (--version)
+cli-command-with-alias/0.0.0 darwin-arm64 node-v20.11.0
+$ oclif --help [COMMAND]
+USAGE
+  $ oclif COMMAND
+...
+```
+
+<!-- usagestop -->
+
+# Commands
+
+<!-- commands -->
+
+# Command Topics
+
+- [`oclif roottopic:subtopic1`](docs/roottopic/subtopic1.md) - Subtopic1 description
+- [`oclif roottopic:subtopic2`](docs/roottopic/subtopic2.md) - Subtopic2 description
+
+<!-- commandsstop -->
diff --git a/test/fixtures/cli-with-nested-topics/package.json b/test/fixtures/cli-with-nested-topics/package.json
new file mode 100644
index 000000000..a581b4033
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/package.json
@@ -0,0 +1,23 @@
+{
+  "name": "cli-command-with-alias",
+  "files": [
+    "/lib"
+  ],
+  "oclif": {
+    "commands": "./lib/commands",
+    "bin": "oclif",
+    "helpClass": "./lib/help",
+    "topics": {
+      "roottopic":{
+          "description": "Root topic description",
+          "hidden":true
+      },
+      "roottopic:subtopic1": {
+        "description": "Subtopic1 description"
+      },
+      "roottopic:subtopic2": {
+        "description": "Subtopic2 description"
+      }
+    }
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics/src/commands/roottopic/subtopic1/hello.ts b/test/fixtures/cli-with-nested-topics/src/commands/roottopic/subtopic1/hello.ts
new file mode 100644
index 000000000..ea48c59de
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/src/commands/roottopic/subtopic1/hello.ts
@@ -0,0 +1,13 @@
+import {Command} from '@oclif/core'
+
+export default class Hello extends Command {
+  static description = 'a simple command'
+
+  static flags = {}
+
+  static aliases = ['hi']
+
+  async run(): Promise<void> {
+    this.log('hello world')
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics/src/commands/roottopic/subtopic2/hello.ts b/test/fixtures/cli-with-nested-topics/src/commands/roottopic/subtopic2/hello.ts
new file mode 100644
index 000000000..ea48c59de
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/src/commands/roottopic/subtopic2/hello.ts
@@ -0,0 +1,13 @@
+import {Command} from '@oclif/core'
+
+export default class Hello extends Command {
+  static description = 'a simple command'
+
+  static flags = {}
+
+  static aliases = ['hi']
+
+  async run(): Promise<void> {
+    this.log('hello world')
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics/src/help.ts b/test/fixtures/cli-with-nested-topics/src/help.ts
new file mode 100644
index 000000000..d3c75e3bf
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/src/help.ts
@@ -0,0 +1,7 @@
+import {Interfaces, Help} from '@oclif/core'
+
+export default class CustomHelp extends Help {
+  formatCommand(command: Interfaces.Command): string {
+    return `Custom help for ${command.id}`
+  }
+}
diff --git a/test/fixtures/cli-with-nested-topics/src/index.ts b/test/fixtures/cli-with-nested-topics/src/index.ts
new file mode 100644
index 000000000..e32b0b2e5
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/src/index.ts
@@ -0,0 +1 @@
+export {run} from '@oclif/core'
diff --git a/test/fixtures/cli-with-nested-topics/tsconfig.json b/test/fixtures/cli-with-nested-topics/tsconfig.json
new file mode 100644
index 000000000..b4c5d7686
--- /dev/null
+++ b/test/fixtures/cli-with-nested-topics/tsconfig.json
@@ -0,0 +1,14 @@
+{
+  "compilerOptions": {
+    "declaration": true,
+    "importHelpers": true,
+    "module": "commonjs",
+    "outDir": "lib",
+    "rootDir": "src",
+    "strict": true,
+    "target": "es2017"
+  },
+  "include": [
+    "src/**/*"
+  ]
+}
diff --git a/test/fixtures/cli-with-old-school-custom-help/src/commands/hello.ts b/test/fixtures/cli-with-old-school-custom-help/src/commands/hello.ts
index 076bb3450..00a47e4af 100644
--- a/test/fixtures/cli-with-old-school-custom-help/src/commands/hello.ts
+++ b/test/fixtures/cli-with-old-school-custom-help/src/commands/hello.ts
@@ -1,6 +1,11 @@
-import {Command, Flags} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Args, Command, Flags} from '@oclif/core'
 
 export default class Hello extends Command {
+  static args = {
+    file: Args.string(),
+  }
+
   static description = 'describe the command here'
 
   static examples = [
@@ -10,15 +15,13 @@ hello world from ./src/hello.ts!
   ]
 
   static flags = {
+    // flag with no value (-f, --force)
+    force: Flags.boolean({char: 'f'}),
     help: Flags.help({char: 'h'}),
     // flag with a value (-n, --name=VALUE)
     name: Flags.string({char: 'n', description: 'name to print'}),
-    // flag with no value (-f, --force)
-    force: Flags.boolean({char: 'f'}),
   }
 
-  static args = [{name: 'file'}]
-
   async run(): Promise<void> {
     const {args, flags} = await this.parse(Hello)
 
diff --git a/test/fixtures/cli-with-old-school-custom-help/src/help.ts b/test/fixtures/cli-with-old-school-custom-help/src/help.ts
index f7ac1aa11..833f2f57f 100644
--- a/test/fixtures/cli-with-old-school-custom-help/src/help.ts
+++ b/test/fixtures/cli-with-old-school-custom-help/src/help.ts
@@ -1,15 +1,16 @@
-import {Interfaces, HelpBase} from '@oclif/core'
+// eslint-disable-next-line node/no-extraneous-import
+import {Command, HelpBase} from '@oclif/core'
 
 export default class CustomHelp extends HelpBase {
-  async showHelp(): Promise<void> {
-    console.log('TODO: showHelp')
+  command(command: Command.Class): string {
+    return `Custom help for ${command.id}`
   }
 
-  async showCommandHelp(command: Interfaces.Command): Promise<void> {
+  async showCommandHelp(command: Command.Class): Promise<void> {
     console.log(`Custom help for ${command.id}`)
   }
 
-  command(command: Interfaces.Command): string {
-    return `Custom help for ${command.id}`
+  async showHelp(): Promise<void> {
+    console.log('TODO: showHelp')
   }
 }
diff --git a/test/fixtures/cli-with-old-school-custom-help/src/index.ts b/test/fixtures/cli-with-old-school-custom-help/src/index.ts
index e32b0b2e5..e69de29bb 100644
--- a/test/fixtures/cli-with-old-school-custom-help/src/index.ts
+++ b/test/fixtures/cli-with-old-school-custom-help/src/index.ts
@@ -1 +0,0 @@
-export {run} from '@oclif/core'
diff --git a/test/fixtures/cli-with-old-school-custom-help/tsconfig.json b/test/fixtures/cli-with-old-school-custom-help/tsconfig.json
index b4c5d7686..75eeb316a 100644
--- a/test/fixtures/cli-with-old-school-custom-help/tsconfig.json
+++ b/test/fixtures/cli-with-old-school-custom-help/tsconfig.json
@@ -8,7 +8,5 @@
     "strict": true,
     "target": "es2017"
   },
-  "include": [
-    "src/**/*"
-  ]
+  "include": ["src/**/*"]
 }
diff --git a/test/helpers/helper.test.ts b/test/helpers/helper.test.ts
index eec2ff46e..f875d4970 100644
--- a/test/helpers/helper.test.ts
+++ b/test/helpers/helper.test.ts
@@ -1,5 +1,6 @@
+import {expect} from 'chai'
+
 import {deleteFolder} from './helper'
-import {expect} from '@oclif/test'
 
 describe('helper', () => {
   it('should not do a recursive list', async () => {
diff --git a/test/helpers/helper.ts b/test/helpers/helper.ts
index 6e9116121..32336f54c 100644
--- a/test/helpers/helper.ts
+++ b/test/helpers/helper.ts
@@ -1,17 +1,22 @@
-import {expect} from '@oclif/test'
-import {gitSha} from '../../src/tarballs'
+import {DeleteObjectsRequest, ObjectIdentifier} from '@aws-sdk/client-s3'
+import {expect} from 'chai'
+import * as fs from 'node:fs'
 import * as shelljs from 'shelljs'
-import * as S3 from 'aws-sdk/clients/s3'
+
 import aws from '../../src/aws'
-import * as fs from 'fs'
+import {gitSha} from '../../src/tarballs'
 
 export const oclifTestingVersionsURI = 'media/salesforce-cli/oclif-testing/versions'
 export const oclifTestingChannelsURI = 'media/salesforce-cli/oclif-testing/channels'
 export const developerSalesforceCom = 'developer.salesforce.com'
 
-export const findDistFileSha = async (cwd: string, platform: string, filter: (f: string) => boolean): Promise<string[]> => {
+export const findDistFileSha = async (
+  cwd: string,
+  platform: string,
+  filter: (f: string) => boolean,
+): Promise<string[]> => {
   const distFiles = await fs.promises.readdir(`${cwd}/dist/${platform}/`)
-  const pkg = distFiles.find(element => filter(element)) as string
+  const pkg = distFiles.find((element) => filter(element)) as string
   expect(pkg).to.be.ok
   return [pkg, await gitSha(process.cwd(), {short: true})]
 }
@@ -24,16 +29,15 @@ export function gitShaSync(cwd: string, options: {short?: boolean} = {}): string
 
 export async function deleteFolder(bucket: string, folder: string): Promise<(string | undefined)[]> {
   const foundObjects = await aws.s3.listObjects({Bucket: bucket, Prefix: folder})
-  const foundKeys = foundObjects.Contents?.map(o => o.Key)
+  const foundKeys = foundObjects.Contents?.map((o) => o.Key)
   if (foundKeys && foundKeys.length > 0) {
-    const deleteObjectsRequest: S3.Types.DeleteObjectsRequest = {
+    const deleteObjectsRequest: DeleteObjectsRequest = {
       Bucket: bucket,
-      Delete: {Objects: foundKeys!.map(k => ({Key: k} as S3.ObjectIdentifier))},
+      Delete: {Objects: foundKeys!.map((k) => ({Key: k}) as ObjectIdentifier)},
     }
     const deletedObjects = await aws.s3.deleteObjects(deleteObjectsRequest)
-    return deletedObjects?.Deleted ? deletedObjects.Deleted.map(o => o.Key) : []
+    return deletedObjects?.Deleted ? deletedObjects.Deleted.map((o) => o.Key) : []
   }
 
   return []
 }
-
diff --git a/test/helpers/init.js b/test/helpers/init.js
index f8e35e6ca..f97148b60 100644
--- a/test/helpers/init.js
+++ b/test/helpers/init.js
@@ -1,2 +1,2 @@
-const path = require('path')
+const path = require('node:path')
 process.env.TS_NODE_PROJECT = path.resolve('test/tsconfig.json')
diff --git a/test/integration/cli.test.ts b/test/integration/cli.test.ts
new file mode 100644
index 000000000..8360e1b65
--- /dev/null
+++ b/test/integration/cli.test.ts
@@ -0,0 +1,165 @@
+import {expect} from 'chai'
+import {existsSync} from 'node:fs'
+import {mkdir, readFile, readdir, rm, writeFile} from 'node:fs/promises'
+import {tmpdir} from 'node:os'
+import {join} from 'node:path'
+
+import {exec} from './util'
+
+const MODULE_TYPE = process.env.OCLIF_INTEGRATION_MODULE_TYPE || 'CommonJS'
+const PACKAGE_MANAGER = process.env.OCLIF_INTEGRATION_PACKAGE_MANAGER || 'npm'
+const LOCK_FILES = ['yarn.lock', 'package-lock.json', 'pnpm-lock.yaml', 'npm-shrinkwrap.json', 'oclif.lock']
+const NODE_VERSION = process.version
+
+// Skip `oclif pack tarballs` tests on Windows and with pnpm
+const maybeSkip = process.platform === 'win32' || PACKAGE_MANAGER === 'pnpm' ? it.skip : it
+
+/**
+ * Delete prepack script from package.json because it will generate an oclif.manifest.json
+ * that contains .ts paths (instead of .js) since NODE_ENV=test when running in mocha.
+ */
+async function deletePrepackScript(cliDir: string): Promise<void> {
+  const pjsonPath = join(cliDir, 'package.json')
+  const pjson = JSON.parse(await readFile(pjsonPath, 'utf8'))
+  delete pjson.scripts.prepack
+  await writeFile(pjsonPath, JSON.stringify(pjson, null, 2))
+}
+
+describe(`Generated CLI Integration Tests ${MODULE_TYPE} + ${PACKAGE_MANAGER} + node ${NODE_VERSION}`, () => {
+  const tmpDir = join(
+    tmpdir(),
+    `generated-cli-integration-tests-${MODULE_TYPE}-${PACKAGE_MANAGER}-node-${NODE_VERSION}`,
+  )
+  const executable = join(process.cwd(), 'bin', process.platform === 'win32' ? 'dev.cmd' : 'dev.js')
+  const cliName = 'mycli'
+  const cliDir = join(tmpDir, cliName)
+  let cliBinRun: string
+  let cliBinDev: string
+
+  function setBins(): void {
+    const usesJsScripts = existsSync(join(cliDir, 'bin', 'run.js'))
+    const extension = process.platform === 'win32' ? '.cmd' : usesJsScripts ? '.js' : ''
+    cliBinRun = join(tmpDir, cliName, 'bin', `run${extension}`)
+    cliBinDev = join(tmpDir, cliName, 'bin', `dev${extension}`)
+  }
+
+  before(async () => {
+    console.log('tmpDir:', tmpDir)
+    await rm(tmpDir, {force: true, recursive: true})
+    await mkdir(tmpDir, {recursive: true})
+  })
+
+  it('should generate a CLI', async () => {
+    const genResult = await exec(
+      `${executable} generate ${cliName} --yes --module-type ${MODULE_TYPE} --package-manager ${PACKAGE_MANAGER}`,
+      {cwd: tmpDir},
+    )
+    expect(genResult.code).to.equal(0)
+    expect(genResult.stdout).to.include(`Created ${cliName}`)
+
+    setBins()
+
+    const result = await exec(`${cliBinRun} hello world`, {cwd: cliDir})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.equal('hello world! (./src/commands/hello/world.ts)\n')
+
+    if (PACKAGE_MANAGER === 'yarn') {
+      expect(existsSync(join(cliDir, 'yarn.lock'))).to.be.true
+    }
+
+    if (PACKAGE_MANAGER === 'npm') {
+      expect(existsSync(join(cliDir, 'package-lock.json'))).to.be.true
+      expect(existsSync(join(cliDir, 'yarn.lock'))).to.be.false
+    }
+
+    if (PACKAGE_MANAGER === 'pnpm') {
+      expect(existsSync(join(cliDir, 'pnpm-lock.yaml'))).to.be.true
+      expect(existsSync(join(cliDir, 'yarn.lock'))).to.be.false
+    }
+  })
+
+  it('should generate a new command', async () => {
+    const genResult = await exec(`${executable} generate command foo:bar:baz --force`, {cwd: cliDir})
+    expect(genResult.code).to.equal(0)
+
+    const result = await exec(`${cliBinDev} foo:bar:baz`, {cwd: cliDir})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('hello world')
+  })
+
+  it('should generate a new hook', async () => {
+    const genResult = await exec(`${executable} generate hook init --event init --force`, {cwd: cliDir})
+    expect(genResult.code).to.equal(0)
+
+    const result = await exec(`${cliBinDev} foo:bar:baz`, {cwd: cliDir})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('example hook running foo:bar:baz\n')
+  })
+
+  it('should generate a README', async () => {
+    const genResult = await exec(`${executable} readme`, {cwd: cliDir})
+    expect(genResult.code).to.equal(0)
+
+    if (process.platform !== 'win32') {
+      // TODO: fix this test on Windows
+      const contents = await readFile(join(cliDir, 'README.md'), 'utf8')
+
+      // Ensure that the README doesn't contain any references to the dist/ folder
+      const distRegex = /dist\//g
+      const distMatches = contents.match(distRegex)
+      expect(distMatches).to.be.null
+
+      const srcRegex = /src\//g
+      const srcMatches = contents.match(srcRegex)
+      expect(srcMatches).to.not.be.null
+    }
+  })
+
+  it('should generate passing tests', async () => {
+    const result = await exec(`${PACKAGE_MANAGER} run test`, {cwd: cliDir})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('5 passing')
+  })
+
+  maybeSkip('generated CLI should be packable', async () => {
+    await exec('git init', {cwd: cliDir})
+    await exec('git add .', {cwd: cliDir})
+    await exec('git commit -m "chore: initial commit"', {cwd: cliDir})
+
+    await exec(`${PACKAGE_MANAGER} run build`, {cwd: cliDir})
+    await deletePrepackScript(cliDir)
+
+    await exec(`${executable} pack tarballs --targets linux-arm`, {cwd: cliDir})
+    expect(existsSync(join(cliDir, 'tmp', cliName, 'package.json'))).to.be.true
+
+    const result = await exec(`bin/${cliName} hello world`, {cwd: join(cliDir, 'tmp', cliName)})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('hello world! (./src/commands/hello/world.ts)\n')
+
+    // expect some lock files to exist
+    const allFiles = await readdir(join(cliDir, 'tmp', cliName), {recursive: true})
+    const someLockFilesPresent = LOCK_FILES.some((lockfile) => allFiles.includes(lockfile))
+    expect(someLockFilesPresent).to.be.true
+  })
+
+  maybeSkip('generated CLI should be packable with --prune-lockfiles', async () => {
+    await exec('git init', {cwd: cliDir})
+    await exec('git add .', {cwd: cliDir})
+    await exec('git commit -m "chore: initial commit"', {cwd: cliDir})
+
+    await exec(`${PACKAGE_MANAGER} run build`, {cwd: cliDir})
+    await deletePrepackScript(cliDir)
+
+    await exec(`${executable} pack tarballs --targets linux-arm --prune-lockfiles`, {cwd: cliDir})
+    expect(existsSync(join(cliDir, 'tmp', cliName, 'package.json'))).to.be.true
+
+    const result = await exec(`bin/${cliName} hello world`, {cwd: join(cliDir, 'tmp', cliName)})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('hello world! (./src/commands/hello/world.ts)\n')
+
+    // expect no lock files to exist
+    const allFiles = await readdir(join(cliDir, 'tmp', cliName), {recursive: true})
+    const noLockFilesPresent = LOCK_FILES.every((lockfile) => !allFiles.includes(lockfile))
+    expect(noLockFilesPresent).to.be.true
+  })
+})
diff --git a/test/integration/deb.test.ts b/test/integration/deb.test.ts
index 819b90020..ad0bf558e 100644
--- a/test/integration/deb.test.ts
+++ b/test/integration/deb.test.ts
@@ -1,18 +1,21 @@
-import {expect, test} from '@oclif/test'
-import {deleteFolder, developerSalesforceCom} from '../helpers/helper'
-import {gitSha} from '../../src/tarballs'
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
 import * as fs from 'fs-extra'
-import * as path from 'path'
-import {exec as execSync} from 'child_process'
+import _ from 'lodash'
+import {exec as execSync} from 'node:child_process'
+import * as path from 'node:path'
 import {promisify} from 'node:util'
 
+import {gitSha} from '../../src/tarballs'
+import {deleteFolder, developerSalesforceCom} from '../helpers/helper'
+
 const exec = promisify(execSync)
 const pjson = require('../../package.json')
 const pjsonPath = require.resolve('../../package.json')
-const originalVersion = pjson.version
+const originalPJSON = _.cloneDeep(pjson)
 const target = [process.platform, process.arch].join('-')
 
-const onlyLinux = process.platform === 'linux' ? test : test.skip()
+const onlyLinux = process.platform === 'linux' ? it : it.skip
 const testRun = `test-${Math.random().toString().split('.')[1].slice(0, 4)}`
 
 describe('publish:deb', () => {
@@ -23,34 +26,40 @@ describe('publish:deb', () => {
   beforeEach(async () => {
     pjson.version = `${pjson.version}-${testRun}`
     pjson.oclif.update.node.version = process.versions.node
+    pjson.oclif.binAliases = ['oclif2']
     bucket = pjson.oclif.update.s3.bucket
     basePrefix = pjson.oclif.update.s3.folder
     await deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`)
     await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
     await fs.emptyDir(root)
   })
+
   afterEach(async () => {
     if (!process.env.PRESERVE_ARTIFACTS) {
       await deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`)
     }
 
-    pjson.version = originalVersion
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
+    await fs.writeJSON(pjsonPath, originalPJSON, {spaces: 2})
   })
 
-  onlyLinux
-  .command(['pack:deb'])
-  .command(['upload:deb'])
-  .it('publishes valid releases', async () => {
+  onlyLinux('publishes valid releases', async () => {
+    await runCommand('pack deb', undefined, {print: true})
+
+    await runCommand('upload deb', undefined, {print: true})
+
     const sha = await gitSha(process.cwd(), {short: true})
-    await exec('cat test/release.key | sudo apt-key add -')
-    await exec(`sudo sh -c 'echo "deb https://${developerSalesforceCom}/${basePrefix}/versions/${pjson.version}/${sha}/apt/ /" > /etc/apt/sources.list.d/oclif.list'`)
-    await exec('sudo apt-get update')
-    await exec('sudo apt-get install -y oclif')
-    await exec('oclif --version')
-    // test the binAliases section
-    expect((await exec('oclif2 --version')).stdout).to.contain(`oclif/${pjson.version} ${target} node-v${pjson.oclif.update.node.version}`)
-    const {stdout} = await exec('oclif --version')
-    expect(stdout).to.contain(`oclif/${pjson.version} ${target} node-v${pjson.oclif.update.node.version}`)
+
+    const debUrl = `https://${developerSalesforceCom}/${basePrefix}/versions/${pjson.version}/${sha}/apt/oclif_${pjson.version.split('-')[0]}.${sha}-1_amd64.deb`
+    console.log('downloading .deb from', debUrl)
+    // download the deb
+    await exec(`curl -sL ${debUrl} -o ${root}/oclif.deb`)
+    // install the deb
+    await exec(`sudo dpkg -i ${root}/oclif.deb`)
+    // test the bin
+    const {stdout: oclif} = await exec('oclif --version')
+    expect(oclif).to.contain(`oclif/${pjson.version} ${target} node-v${pjson.oclif.update.node.version}`)
+    // test the bin alias
+    const {stdout: oclif2} = await exec('oclif2 --version')
+    expect(oclif2).to.contain(`oclif/${pjson.version} ${target} node-v${pjson.oclif.update.node.version}`)
   })
 })
diff --git a/test/integration/init.test.ts b/test/integration/init.test.ts
new file mode 100644
index 000000000..ec446e925
--- /dev/null
+++ b/test/integration/init.test.ts
@@ -0,0 +1,167 @@
+import {expect} from 'chai'
+import {mkdir, readFile, rm, writeFile} from 'node:fs/promises'
+import {tmpdir} from 'node:os'
+import {join} from 'node:path'
+
+import {exec} from './util'
+
+function getPackageManager(): 'npm' | 'pnpm' | 'yarn' {
+  const raw = process.env.OCLIF_INTEGRATION_PACKAGE_MANAGER
+  if (raw === 'npm' || raw === 'pnpm' || raw === 'yarn') return raw
+  return 'npm'
+}
+
+function getModuleType(): 'CommonJS' | 'ESM' {
+  const raw = process.env.OCLIF_INTEGRATION_MODULE_TYPE
+  if (raw === 'ESM') return raw
+  return 'CommonJS'
+}
+
+const MODULE_TYPE = getModuleType()
+const PACKAGE_MANAGER = getPackageManager()
+const nodeVersion = process.version
+
+const TS_CONFIGS: Record<'CommonJS' | 'ESM', Record<string, unknown>> = {
+  CommonJS: {
+    compilerOptions: {
+      declaration: true,
+      importHelpers: true,
+      module: 'commonjs',
+      outDir: 'dist',
+      rootDir: 'src',
+      strict: true,
+      target: 'es2019',
+    },
+    include: ['src/**/*'],
+  },
+  ESM: {
+    compilerOptions: {
+      declaration: true,
+      module: 'Node16',
+      moduleResolution: 'node16',
+      outDir: 'dist',
+      rootDir: 'src',
+      strict: true,
+      target: 'es2022',
+    },
+    include: ['src/**/*'],
+    'ts-node': {
+      esm: true,
+    },
+  },
+}
+
+async function compile(cwd: string): Promise<void> {
+  switch (PACKAGE_MANAGER) {
+    case 'yarn': {
+      await exec('yarn tsc', {cwd})
+      break
+    }
+
+    case 'pnpm': {
+      await exec('pnpm exec tsc', {cwd})
+      break
+    }
+
+    case 'npm': {
+      await exec('npm exec tsc', {cwd})
+      break
+    }
+
+    default: {
+      throw new Error(`Unsupported package manager: ${PACKAGE_MANAGER}`)
+    }
+  }
+}
+
+async function addDeps(cwd: string): Promise<void> {
+  switch (PACKAGE_MANAGER) {
+    case 'yarn': {
+      await exec('yarn init --yes', {cwd})
+      await exec('yarn add typescript --dev', {cwd})
+      break
+    }
+
+    case 'pnpm': {
+      await exec('pnpm init', {cwd})
+      await exec('pnpm install typescript --save-dev', {cwd})
+      break
+    }
+
+    case 'npm': {
+      await exec('npm init --yes', {cwd})
+      await exec('npm install typescript --save-dev', {cwd})
+      break
+    }
+
+    default: {
+      throw new Error(`Unsupported package manager: ${PACKAGE_MANAGER}`)
+    }
+  }
+}
+
+describe(`oclif init Integration Tests ${MODULE_TYPE} + ${PACKAGE_MANAGER} + node ${nodeVersion}`, () => {
+  const projectDir = 'my-project'
+  const tmpDir = join(
+    tmpdir(),
+    `oclif-init-integration-tests-${MODULE_TYPE}-${PACKAGE_MANAGER}-node-${nodeVersion}`,
+    projectDir,
+  )
+
+  const executable = join(process.cwd(), 'bin', process.platform === 'win32' ? 'dev.cmd' : 'dev.js')
+
+  let binRun: string
+  let binDev: string
+
+  function setBins(): void {
+    const extension = process.platform === 'win32' ? '.cmd' : '.js'
+    binRun = join(tmpDir, 'bin', `run${extension}`)
+    binDev = join(tmpDir, 'bin', `dev${extension}`)
+  }
+
+  before(async () => {
+    console.log('tmpDir:', tmpDir)
+    await rm(tmpDir, {force: true, recursive: true})
+    await mkdir(tmpDir, {recursive: true})
+    await addDeps(tmpDir)
+
+    const pjson = JSON.parse(await readFile(join(tmpDir, 'package.json'), 'utf8'))
+    pjson.type = MODULE_TYPE === 'ESM' ? 'module' : 'commonjs'
+    await writeFile(join(tmpDir, 'package.json'), JSON.stringify(pjson, null, 2))
+
+    await writeFile(join(tmpDir, 'tsconfig.json'), JSON.stringify(TS_CONFIGS[MODULE_TYPE], null, 2))
+  })
+
+  it('should initialize a new oclif project in the current directory', async () => {
+    const initResult = await exec(`${executable} init --yes`, {cwd: tmpDir})
+    expect(initResult.code).to.equal(0)
+    expect(initResult.stdout).to.include(`Created CLI ${projectDir}`)
+
+    setBins()
+  })
+
+  it('should be able to run generated commands', async () => {
+    const genResult = await exec(`${executable} generate command foo:bar:baz --force`, {
+      cwd: tmpDir,
+    })
+    expect(genResult.code).to.equal(0)
+
+    const devResult = await exec(`${binDev} foo:bar:baz`, {cwd: tmpDir})
+    expect(devResult.code).to.equal(0)
+    expect(devResult.stdout).to.include('hello world')
+
+    await compile(tmpDir)
+    const result = await exec(`${binRun} foo:bar:baz`, {cwd: tmpDir})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('hello world')
+  })
+
+  it('should be able to run generated hooks', async () => {
+    const genResult = await exec(`${executable} generate hook init --event init --force`, {cwd: tmpDir})
+    expect(genResult.code).to.equal(0)
+
+    const result = await exec(`${binDev} foo:bar:baz`, {cwd: tmpDir})
+    expect(result.code).to.equal(0)
+    expect(result.stdout).to.include('example hook running foo:bar:baz\n')
+  })
+})
diff --git a/test/integration/macos.test.ts b/test/integration/macos.test.ts
index e519e3adf..bf09c9bea 100644
--- a/test/integration/macos.test.ts
+++ b/test/integration/macos.test.ts
@@ -1,18 +1,19 @@
-import {expect, test} from '@oclif/test'
-import {deleteFolder, developerSalesforceCom, findDistFileSha} from '../helpers/helper'
-import * as fs from 'fs-extra'
-import * as path from 'path'
-import {promisify} from 'node:util'
-import {pipeline as pipelineSync} from 'node:stream'
-import got from 'got'
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+import {emptyDir, writeJSON} from 'fs-extra'
+import _ from 'lodash'
+import {createWriteStream} from 'node:fs'
+import * as path from 'node:path'
+import {pipeline} from 'node:stream/promises'
 import {exec} from 'shelljs'
 
-const pipeline = promisify(pipelineSync)
+import {deleteFolder, developerSalesforceCom, findDistFileSha} from '../helpers/helper'
+
 const pjson = require('../../package.json')
 const pjsonPath = require.resolve('../../package.json')
-const originalVersion = pjson.version
+const originalPJSON = _.cloneDeep(pjson)
 
-const onlyMacos = process.platform === 'darwin' ? test : test.skip()
+const onlyMacos = process.platform === 'darwin' ? it : it.skip
 const testRun = `test-${Math.random().toString().split('.')[1].slice(0, 4)}`
 
 describe('publish:macos', () => {
@@ -26,36 +27,37 @@ describe('publish:macos', () => {
   beforeEach(async () => {
     pjson.version = `${pjson.version}-${testRun}`
     pjson.oclif.update.node.version = process.versions.node
+    pjson.oclif.binAliases = ['oclif2']
     bucket = pjson.oclif.update.s3.bucket
     basePrefix = pjson.oclif.update.s3.folder
     await deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`)
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
-    await fs.emptyDir(root)
+    await writeJSON(pjsonPath, pjson, {spaces: 2})
+    await emptyDir(root)
   })
   afterEach(async () => {
     if (!process.env.PRESERVE_ARTIFACTS) {
       await deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`)
     }
 
-    pjson.version = originalVersion
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
+    await writeJSON(pjsonPath, originalPJSON, {spaces: 2})
   })
 
-  onlyMacos
-  .command(['pack:macos'])
-  .do(async () => {
+  onlyMacos('publishes valid releases', async () => {
+    await runCommand('pack macos')
+
     // install the intel silicon pkg
-    [pkg, sha] = await findDistFileSha(cwd, 'macos', f => f.endsWith('x64.pkg'))
-    await exec(`sudo installer -pkg ${path.join(cwd, 'dist', 'macos', pkg)} -target /`)
+    ;[pkg, sha] = await findDistFileSha(cwd, 'macos', (f) => f.endsWith('x64.pkg'))
+    exec(`sudo installer -pkg ${path.join(cwd, 'dist', 'macos', pkg)} -target /`)
     expect(exec('oclif --version').stdout).to.contain(`oclif/${pjson.version}`)
     // tests binAlias
     expect(exec('oclif2 --version').stdout).to.contain(`oclif/${pjson.version}`)
-  })
-  .command(['upload:macos'])
-  .it('publishes valid releases', async () => {
+
+    await runCommand('upload macos')
+
+    const {default: got} = await import('got')
     await pipeline(
       got.stream(`https://${developerSalesforceCom}/${basePrefix}/versions/${pjson.version}/${sha}/${pkg}`),
-      fs.createWriteStream(pkg),
+      createWriteStream(pkg),
     )
   })
 })
diff --git a/test/integration/publish.test.ts b/test/integration/publish.test.ts
index 4ad6c4976..27db80fc6 100644
--- a/test/integration/publish.test.ts
+++ b/test/integration/publish.test.ts
@@ -1,96 +1,93 @@
-import {expect, test} from '@oclif/test'
-import {join} from 'path'
-import * as fs from 'fs-extra'
+import {Interfaces} from '@oclif/core'
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+import {emptyDir, writeJSON} from 'fs-extra'
+import _ from 'lodash'
+import {exec as execSync} from 'node:child_process'
+import {createWriteStream} from 'node:fs'
+import {rm} from 'node:fs/promises'
+import {join} from 'node:path'
+import {pipeline} from 'node:stream/promises'
 import {promisify} from 'node:util'
-import {pipeline as pipelineSync} from 'node:stream'
-import got from 'got'
-import {exec as execSync} from 'child_process'
-import {hash} from '../../src/util'
+
 import aws from '../../src/aws'
+import {hash} from '../../src/util'
 import {deleteFolder, developerSalesforceCom, gitShaSync} from '../helpers/helper'
-import {Interfaces} from '@oclif/core'
 
 const exec = promisify(execSync)
 
-const pipeline = promisify(pipelineSync)
-
 const pjson = require('../../package.json')
 const pjsonPath = require.resolve('../../package.json')
-const originalVersion = pjson.version
+const originalPJSON = _.cloneDeep(pjson)
 const target = [process.platform, process.arch].join('-')
-const skipIfWindows = process.platform === 'win32' ? test.skip() : test
+
 const testRun = `test-${Math.random().toString().split('.')[1].slice(0, 4)}`
 const cwd = process.cwd()
 pjson.version = `${pjson.version}-${testRun}`
 pjson.oclif.update.node.version = process.versions.node
-const bucket = pjson.oclif.update.s3.bucket
+pjson.oclif.binAliases = ['oclif2']
+const {bucket} = pjson.oclif.update.s3
 const basePrefix = pjson.oclif.update.s3.folder
 const root = join(__dirname, '../tmp/test/publish')
 const sha = gitShaSync(cwd, {short: true})
 
 const manifest = async (path: string, nodeVersion: string) => {
   const list = await aws.s3.listObjects({Bucket: bucket, Prefix: `${basePrefix}/${path}`})
-  const manifestFile = list.Contents?.map(listObject => listObject.Key).find(f => f!.includes(target) && f!.endsWith('-buildmanifest'))
+  const manifestFile = list.Contents?.map((listObject) => listObject.Key).find(
+    (f) => f!.includes(target) && f!.endsWith('-buildmanifest'),
+  )
   if (!manifestFile) {
     throw new Error(`could not find a buildmanifest file for target ${target}`)
   }
 
+  const {default: got} = await import('got')
   const manifest = await got(`https://${developerSalesforceCom}/${manifestFile}`).json<Interfaces.S3Manifest>()
   const test = async (url: string, expectedSha: string, nodeVersion: string) => {
     const xz = url.endsWith('.tar.xz')
     const ext = xz ? '.tar.xz' : '.tar.gz'
-    await pipeline(
-      got.stream(url),
-      fs.createWriteStream(join(root, `oclif${ext}`)),
-    )
+    await pipeline(got.stream(url), createWriteStream(join(root, `oclif${ext}`)))
     const receivedSha = await hash('sha256', join(root, `oclif${ext}`))
     expect(receivedSha).to.equal(expectedSha)
-    if (xz) {
-      await exec('tar xJf oclif.tar.xz', {cwd: root})
-    } else {
-      await exec('tar xzf oclif.tar.gz', {cwd: root})
-    }
+    await (xz ? exec('tar xJf oclif.tar.xz', {cwd: root}) : exec('tar xzf oclif.tar.gz', {cwd: root}))
 
     const {stdout} = await exec('./oclif/bin/oclif --version', {cwd: root})
     expect(stdout).to.contain(`oclif/${pjson.version} ${target} node-v${nodeVersion}`)
 
     // check alias
-    const stdout2 = (await exec('./oclif/bin/oclif2 --version', {cwd: root})).stdout
-    expect(stdout2).to.contain(`oclif/${pjson.version} ${target} node-v${nodeVersion}`)
-    await fs.promises.rm(join(root, 'oclif'), {recursive: true})
+    const {stdout: oclif2} = await exec('./oclif/bin/oclif2 --version', {cwd: root})
+    expect(oclif2).to.contain(`oclif/${pjson.version} ${target} node-v${nodeVersion}`)
+    await rm(join(root, 'oclif'), {recursive: true})
   }
 
   await test(manifest.gz, manifest.sha256gz, nodeVersion)
   await test(manifest.xz!, manifest.sha256xz!, nodeVersion)
 }
 
-const folderCleanup = async () => Promise.all([
-  deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`),
-  deleteFolder(bucket, `${basePrefix}/channels/${pjson.version}/`),
-])
+const folderCleanup = async () =>
+  Promise.all([
+    deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`),
+    deleteFolder(bucket, `${basePrefix}/channels/${pjson.version}/`),
+  ])
 
 describe('upload tarballs', async () => {
   beforeEach(async () => {
     await folderCleanup()
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
-    await fs.emptyDir(root)
+    await writeJSON(pjsonPath, pjson, {spaces: 2})
+    await emptyDir(root)
   })
   afterEach(async () => {
     if (!process.env.PRESERVE_ARTIFACTS) {
       await folderCleanup()
     }
 
-    pjson.version = originalVersion
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
+    await writeJSON(pjsonPath, originalPJSON, {spaces: 2})
   })
 
-  skipIfWindows
-  .command(['pack:tarballs', '--parallel', '--xz'])
-  .command(['upload:tarballs', '--xz'])
-  .command(['promote', '--channel', pjson.version, '--sha', sha, '--version', pjson.version])
-  .it('checks uploads for version and channel', async () => {
+  it('checks uploads for version and channel', async () => {
+    await runCommand('pack tarballs --parallel --xz')
+    await runCommand('upload tarballs --xz')
+    await runCommand(`promote --channel ${pjson.version} --sha ${sha} --version ${pjson.version}`)
     await manifest(`versions/${pjson.version}/${sha}`, pjson.oclif.update.node.version)
     await manifest(`channels/${pjson.version}`, pjson.oclif.update.node.version)
   })
 })
-
diff --git a/test/integration/sf.test.ts b/test/integration/sf.test.ts
new file mode 100644
index 000000000..6f9ea0e8a
--- /dev/null
+++ b/test/integration/sf.test.ts
@@ -0,0 +1,56 @@
+import {Interfaces} from '@oclif/core'
+import {expect} from 'chai'
+import {execSync} from 'node:child_process'
+import {access, mkdir, readFile, rm} from 'node:fs/promises'
+import {tmpdir} from 'node:os'
+import {join} from 'node:path'
+
+const exists = async (filePath: string): Promise<boolean> => {
+  try {
+    await access(filePath)
+    return true
+  } catch {
+    return false
+  }
+}
+
+describe('sf', () => {
+  describe('manifest', () => {
+    const testDir = join(tmpdir(), 'sf-manifest-integration-test')
+    const sfDir = join(testDir, 'cli')
+
+    before(async () => {
+      if (await exists(testDir)) {
+        await rm(testDir, {force: true, recursive: true})
+      }
+
+      await mkdir(testDir, {recursive: true})
+      execSync(`git clone https://github.com/salesforcecli/cli.git`, {cwd: testDir})
+      execSync('yarn --ignore-scripts', {cwd: sfDir})
+      execSync('yarn build', {cwd: sfDir})
+    })
+
+    it('should generate manifest with JIT plugins', async () => {
+      const binDev =
+        process.platform === 'win32' ? join(process.cwd(), 'bin', 'dev.cmd') : join(process.cwd(), 'bin', 'dev.js')
+
+      execSync(`${binDev} manifest`, {cwd: sfDir})
+
+      const manifest = JSON.parse(await readFile(join(sfDir, 'oclif.manifest.json'), 'utf8')) as Interfaces.Manifest
+
+      const sfPjson = JSON.parse(await readFile(join(sfDir, 'package.json'), 'utf8')) as Interfaces.PJSON.Plugin
+      const jitPlugins = Object.keys(sfPjson.oclif.jitPlugins ?? {})
+
+      const everyPluginHasCommand = jitPlugins.every((jitPlugin) =>
+        // eslint-disable-next-line max-nested-callbacks
+        Boolean(Object.values(manifest.commands).some((command) => command.pluginName === jitPlugin)),
+      )
+      const everyJITCommandIsTypeJIT = Object.values(manifest.commands)
+        .filter((command) => jitPlugins.includes(command.pluginName ?? ''))
+        .every((command) => command.pluginType === 'jit')
+
+      expect(everyPluginHasCommand).to.be.true
+      expect(everyJITCommandIsTypeJIT).to.be.true
+    })
+  })
+})
diff --git a/test/integration/util.ts b/test/integration/util.ts
new file mode 100644
index 000000000..1af51df32
--- /dev/null
+++ b/test/integration/util.ts
@@ -0,0 +1,16 @@
+import {ExecOptions, exec as cpExec} from 'node:child_process'
+
+export async function exec(
+  command: string,
+  opts: ExecOptions,
+): Promise<{code: number; stderr: string; stdout: string}> {
+  return new Promise((resolve, reject) => {
+    cpExec(command, opts, (error, stdout, stderr) => {
+      if (error) {
+        reject(error)
+      } else {
+        resolve({code: 0, stderr, stdout})
+      }
+    })
+  })
+}
diff --git a/test/integration/win.test.ts b/test/integration/win.test.ts
index b9e224ac4..1109c2478 100644
--- a/test/integration/win.test.ts
+++ b/test/integration/win.test.ts
@@ -1,19 +1,18 @@
-import {expect, test} from '@oclif/test'
-import {deleteFolder, developerSalesforceCom, findDistFileSha, oclifTestingVersionsURI} from '../helpers/helper'
-import {gitSha} from '../../src/tarballs'
-import * as path from 'path'
-import * as fs from 'fs-extra'
-import {promisify} from 'node:util'
-import {pipeline as pipelineSync} from 'node:stream'
-import got from 'got'
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+import {emptyDir, writeJSON} from 'fs-extra'
+import {createWriteStream} from 'node:fs'
+import * as path from 'node:path'
+import {pipeline} from 'node:stream/promises'
 
-const pipeline = promisify(pipelineSync)
+import {gitSha} from '../../src/tarballs'
+import {deleteFolder, developerSalesforceCom, findDistFileSha, oclifTestingVersionsURI} from '../helpers/helper'
 
 const pjson = require('../../package.json')
 const pjsonPath = require.resolve('../../package.json')
 const originalVersion = pjson.version
 
-const skipIfWindows = process.platform === 'win32' ? test.skip() : test
+const skipIfWindows = process.platform === 'win32' ? it.skip : it
 const testRun = `test-${Math.random().toString().split('.')[1].slice(0, 4)}`
 
 describe('publish:win', () => {
@@ -30,8 +29,8 @@ describe('publish:win', () => {
     bucket = pjson.oclif.update.s3.bucket
     basePrefix = pjson.oclif.update.s3.folder
     await deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`)
-    await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
-    await fs.emptyDir(root)
+    await writeJSON(pjsonPath, pjson, {spaces: 2})
+    await emptyDir(root)
   })
   afterEach(async () => {
     if (!process.env.PRESERVE_ARTIFACTS) {
@@ -39,23 +38,22 @@ describe('publish:win', () => {
       // useful for downloading and testing the CLI on windows
       await deleteFolder(bucket, `${basePrefix}/versions/${pjson.version}/`)
       pjson.version = originalVersion
-      await fs.writeJSON(pjsonPath, pjson, {spaces: 2})
+      await writeJSON(pjsonPath, pjson, {spaces: 2})
     }
   })
 
-  skipIfWindows
-  .command(['pack:win'])
-  .command(['upload:win'])
-  .do(async () => {
-    [pkg, sha] = await findDistFileSha(process.cwd(), 'win32', f => f.endsWith('x64.exe'))
+  skipIfWindows('publishes valid releases', async () => {
+    await runCommand('pack win')
+    await runCommand('upload win')
+    ;[pkg, sha] = await findDistFileSha(process.cwd(), 'win32', (f) => f.endsWith('x64.exe'))
     expect(pkg).to.be.ok
     expect(sha).to.be.ok
-  })
-  .it('publishes valid releases', async () => {
+
     console.log(`https://${developerSalesforceCom}/${oclifTestingVersionsURI}/${pjson.version}/${sha}/${pkg}`)
+    const {default: got} = await import('got')
     await pipeline(
       got.stream(`https://${developerSalesforceCom}/${oclifTestingVersionsURI}/${pjson.version}/${sha}/${pkg}`),
-      fs.createWriteStream(pkg),
+      createWriteStream(pkg),
     )
   })
 })
diff --git a/test/run.js b/test/run.js
deleted file mode 100644
index 97fd2e779..000000000
--- a/test/run.js
+++ /dev/null
@@ -1,78 +0,0 @@
-const {fancy} = require('fancy-test')
-const path = require('path')
-const sh = require('shelljs')
-const npmPath = require('npm-run-path')
-const tmp = require('tmp')
-const os = require('os')
-
-sh.set('-ev')
-
-// remove CI env var so tests don't run nyc
-const {CI} = process.env
-delete process.env.CI
-process.env.OCLIF_DEBUG = '1'
-
-process.env.YARN_MUTEX = `file:${path.join(os.tmpdir(), 'yarn.mutex')}`
-
-function generate(args) {
-  const run = path.join(__dirname, '../bin/run')
-  sh.exec(`node ${run} ${args}`)
-}
-
-function build(type, features) {
-  let options = ''
-  if (features === 'everything') options = '--options=yarn,typescript,eslint,mocha'
-  if (features === 'typescript') options = '--options=yarn,typescript'
-  if (features === 'mocha') options = '--options=yarn,mocha'
-  let dir = CI ? tmp.tmpNameSync() : path.join(__dirname, '../tmp')
-  dir = path.join(dir, type, features)
-  sh.rm('-rf', dir)
-  generate(`${type} ${dir} --defaults ${options}`)
-  sh.cd(dir)
-  process.env = npmPath.env({env: process.env})
-}
-
-module.exports = file => {
-  const f = path.parse(file)
-  const [name] = f.name.split('.')
-  const cmd = path.basename(f.dir)
-
-  describe(cmd, () => {
-    fancy
-    .retries(CI ? 1 : 0)
-    .do(() => {
-      switch (cmd) {
-      case 'base':
-        build(cmd, name)
-        sh.exec('yarn test')
-        break
-      case 'plugin':
-        build(cmd, name)
-        sh.exec('yarn test')
-        sh.exec('node ./bin/run hello')
-        sh.exec('node ./bin/run')
-        sh.exec('node ./bin/run --help')
-        sh.exec('npm pack --unsafe-perm')
-        break
-      case 'command':
-        build('plugin', name)
-        generate('command foo:bar:baz --defaults --force')
-        sh.exec('yarn test')
-        sh.exec('node ./bin/run hello')
-        sh.exec('node ./bin/run foo:bar:baz')
-        sh.exec('node ./bin/run help foo:bar:baz')
-        sh.exec('node ./bin/run foo:bar:baz --help')
-        sh.exec('npm pack --unsafe-perm')
-        break
-      case 'hook':
-        build('plugin', name)
-        generate('hook myhook --defaults --force')
-        sh.exec('yarn test')
-        sh.exec('node ./bin/run hello')
-        sh.exec('npm pack --unsafe-perm')
-        break
-      }
-    })
-    .it([cmd, name].join(':'))
-  })
-}
diff --git a/test/tsconfig.json b/test/tsconfig.json
index 04c22f3be..aa3859bb8 100644
--- a/test/tsconfig.json
+++ b/test/tsconfig.json
@@ -4,8 +4,5 @@
   "compilerOptions": {
     "sourceMap": true
   },
-  "include": [
-    "./**/*",
-    "../src/**/*"
-  ]
+  "include": ["./**/*", "../src/**/*"]
 }
diff --git a/test/unit/manifest.test.ts b/test/unit/manifest.test.ts
index df002b646..711e185ea 100644
--- a/test/unit/manifest.test.ts
+++ b/test/unit/manifest.test.ts
@@ -1,21 +1,22 @@
 import {Interfaces} from '@oclif/core'
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+import {rm} from 'node:fs/promises'
 
-import {expect, test} from '@oclif/test'
-import * as fs from 'fs-extra'
+describe('manifest', () => {
+  beforeEach(async () => {
+    await rm('oclif.manifest.json', {force: true})
+  })
 
-process.env.NODE_ENV = 'development'
+  afterEach(async () => {
+    await rm('oclif.manifest.json', {force: true})
+  })
 
-describe('manifest', () => {
-  test
-  .stdout()
-  .do(() => fs.remove('.oclif.manifest.json'))
-  .finally(() => fs.remove('.oclif.manifest.json'))
-  .command(['manifest'])
-  .it('outputs plugins', ctx => {
-    const {commands} = fs.readJSONSync('.oclif.manifest.json') as Interfaces.Manifest
-    expect(commands.manifest).to.include({
-      description: 'generates plugin manifest json',
+  it('should generate manifest', async () => {
+    const {result, stdout} = await runCommand<Interfaces.Manifest>('manifest')
+    expect(stdout).to.match(/wrote manifest to .*oclif.manifest.json/)
+    expect(result?.commands.manifest).to.deep.include({
+      description: 'Generates plugin manifest json (oclif.manifest.json).',
     })
-    expect(ctx.stdout).to.match(/wrote manifest to .*oclif.manifest.json/)
   })
 })
diff --git a/test/unit/readme-generator.test.ts b/test/unit/readme-generator.test.ts
new file mode 100644
index 000000000..e38bd9f9c
--- /dev/null
+++ b/test/unit/readme-generator.test.ts
@@ -0,0 +1,304 @@
+import {Config, ux} from '@oclif/core'
+import {expect} from 'chai'
+import sinon from 'sinon'
+
+import ReadmeGenerator from '../../src/readme-generator'
+
+class TestReadmeGenerator extends ReadmeGenerator {
+  public constructor(config: Config, options: {outputDir: string; readmePath: string}) {
+    super(config, options)
+  }
+
+  async read(): Promise<string> {
+    return ''
+  }
+
+  async write(): Promise<void> {}
+}
+
+describe('ReadmeGenerator', () => {
+  let config: Config
+
+  beforeEach(async () => {
+    config = await Config.load(__dirname)
+    sinon.stub(ux, 'stdout').returns()
+  })
+
+  afterEach(() => {
+    sinon.restore()
+  })
+
+  describe('commands', () => {
+    it('should render commands', async () => {
+      const commands = [
+        {
+          args: {
+            person: {
+              description: 'name of person to say hello to',
+              name: 'PERSON',
+              required: true,
+            },
+          },
+          description: 'say hello to anyone',
+          id: 'hello',
+        },
+      ]
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.commands(commands)
+      expect(rendered).to.equal(`* [\`oclif hello PERSON\`](#oclif-hello-person)
+
+## \`oclif hello PERSON\`
+
+say hello to anyone
+
+\`\`\`
+USAGE
+  $ oclif hello PERSON
+
+ARGUMENTS
+  PERSON  name of person to say hello to
+
+DESCRIPTION
+  say hello to anyone
+\`\`\``)
+    })
+
+    it('should render command with custom usage', async () => {
+      const commands = [
+        {
+          args: {
+            person: {
+              description: 'name of person to say hello to',
+              name: 'PERSON',
+              required: true,
+            },
+          },
+          description: 'say hello to anyone',
+          id: 'hello',
+          usage: 'hello PERSON -f <value>',
+        },
+      ]
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.commands(commands)
+      expect(rendered).to.equal(`* [\`oclif hello PERSON -f <value>\`](#oclif-hello-person--f-value)
+
+## \`oclif hello PERSON -f <value>\`
+
+say hello to anyone
+
+\`\`\`
+USAGE
+  $ oclif hello PERSON -f <value>
+
+ARGUMENTS
+  PERSON  name of person to say hello to
+
+DESCRIPTION
+  say hello to anyone
+\`\`\``)
+    })
+
+    it('should ignore hidden args in header', async () => {
+      const commands = [
+        {
+          args: {
+            person: {
+              description: 'name of person to say hello to',
+              name: 'PERSON',
+              required: true,
+            },
+            // eslint-disable-next-line perfectionist/sort-objects
+            other: {
+              description: 'name of person to say hello to',
+              hidden: true,
+              name: 'OTHER',
+            },
+          },
+          description: 'say hello to anyone',
+          id: 'hello',
+        },
+      ]
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.commands(commands)
+      expect(rendered).to.equal(`* [\`oclif hello PERSON\`](#oclif-hello-person)
+
+## \`oclif hello PERSON\`
+
+say hello to anyone
+
+\`\`\`
+USAGE
+  $ oclif hello PERSON [OTHER]
+
+ARGUMENTS
+  PERSON  name of person to say hello to
+
+DESCRIPTION
+  say hello to anyone
+\`\`\``)
+    })
+
+    it('should render command with templated usage', async () => {
+      const commands = [
+        {
+          args: {
+            person: {
+              description: 'name of person to say hello to',
+              name: 'PERSON',
+              required: true,
+            },
+          },
+          description: 'say hello to anyone',
+          id: 'hello',
+          usage: '<%- config.bin %> <%- command.id %>',
+        },
+      ]
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.commands(commands)
+      expect(rendered).to.equal(`* [\`oclif oclif hello\`](#oclif-oclif-hello)
+
+## \`oclif oclif hello\`
+
+say hello to anyone
+
+\`\`\`
+USAGE
+  $ oclif hello oclif hello
+
+ARGUMENTS
+  PERSON  name of person to say hello to
+
+DESCRIPTION
+  say hello to anyone
+\`\`\``)
+    })
+
+    it('should render commands with templated descriptions', async () => {
+      const commands = [
+        {
+          args: {
+            person: {
+              description: 'name of person to say hello to',
+              name: 'PERSON',
+              required: true,
+            },
+          },
+          description: 'This is the name of the command: <%- config.bin %> <%- command.id %>',
+          id: 'hello',
+        },
+      ]
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.commands(commands)
+      expect(rendered).to.equal(`* [\`oclif hello PERSON\`](#oclif-hello-person)
+
+## \`oclif hello PERSON\`
+
+This is the name of the command: oclif hello
+
+\`\`\`
+USAGE
+  $ oclif hello PERSON
+
+ARGUMENTS
+  PERSON  name of person to say hello to
+
+DESCRIPTION
+  This is the name of the command: oclif hello
+\`\`\``)
+    })
+  })
+
+  describe('multiCommands', () => {
+    it('should render multiCommands', async () => {
+      const commands = [
+        {
+          args: {
+            person: {
+              description: 'name of person to say hello to',
+              name: 'PERSON',
+              required: true,
+            },
+          },
+          description: 'say hello to anyone',
+          id: 'hello',
+        },
+      ]
+
+      sinon.stub(config, 'topics').value([
+        {
+          description: 'Say hello from <%- config.bin %>',
+          name: 'hello',
+        },
+      ])
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.multiCommands(commands, 'docs')
+      expect(rendered).to.equal(`# Command Topics
+
+* [\`oclif hello\`](docs/hello.md) - Say hello from oclif
+`)
+    })
+  })
+
+  describe('tableOfContents', () => {
+    it('should render table of contents from headers with single #', async () => {
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = await generator.tableOfContents(`
+Title of Doc
+----
+# header 1
+# header 2
+## header 2.1
+# header 3`)
+      expect(rendered).to.equal(`* [header 1](#header-1)
+* [header 2](#header-2)
+* [header 3](#header-3)`)
+    })
+  })
+
+  describe('usage', () => {
+    it('should render usage based on Config', async () => {
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = generator.usage()
+      expect(rendered).to.equal(`\`\`\`sh-session
+$ npm install -g oclif
+$ oclif COMMAND
+running command...
+$ oclif (--version)
+${config.userAgent}
+$ oclif --help [COMMAND]
+USAGE
+  $ oclif COMMAND
+...
+\`\`\``)
+    })
+
+    it('should render usage with multiple version flags', async () => {
+      sinon.stub(config.pjson, 'oclif').value({
+        ...config.pjson.oclif,
+        additionalVersionFlags: ['-v'],
+      })
+      const generator = new TestReadmeGenerator(config, {outputDir: 'docs', readmePath: 'README.md'})
+      // @ts-expect-error because protected method
+      const rendered = generator.usage()
+      expect(rendered).to.equal(`\`\`\`sh-session
+$ npm install -g oclif
+$ oclif COMMAND
+running command...
+$ oclif (--version|-v)
+${config.userAgent}
+$ oclif --help [COMMAND]
+USAGE
+  $ oclif COMMAND
+...
+\`\`\``)
+    })
+  })
+})
diff --git a/test/unit/readme.test.ts b/test/unit/readme.test.ts
index a152f2f3b..8e783481a 100644
--- a/test/unit/readme.test.ts
+++ b/test/unit/readme.test.ts
@@ -1,105 +1,73 @@
-import {expect, test} from '@oclif/test'
-import * as fs from 'fs-extra'
-import * as path from 'path'
-
-process.env.NODE_ENV = 'development'
-
-const readme = fs.readFileSync('README.md', 'utf8')
+import {runCommand} from '@oclif/test'
+import {expect} from 'chai'
+import {join} from 'node:path'
 
 describe('readme', () => {
-  test
-  .stdout()
-  .finally(() => fs.writeFile('README.md', readme))
-  .command(['readme'])
-  .it('runs readme', () => {
-    // expect(fs.readFileSync('README.md', 'utf8')).to.contain('manifest')
-    expect(fs.readFileSync('README.md', 'utf8')).to.contain('multi')
+  it('runs readme', async () => {
+    const {result} = await runCommand<string>('readme --dry-run')
+    expect(result).to.contain('Adds commands to README.md in current directory.')
   })
 
-  test
-  .stdout()
-  .finally(() => fs.writeFile('README.md', readme))
-  .finally(() => fs.remove('docs'))
-  .command(['readme', '--multi'])
-  .it('runs readme --multi', () => {
-    // expect(fs.readFileSync('README.md', 'utf8')).to.contain('manifest')
-    expect(fs.readFileSync('README.md', 'utf8')).to.contain('multi')
+  describe('multi', () => {
+    it('runs readme --multi', async () => {
+      const {result} = await runCommand<string>('readme --multi --dry-run')
+      expect(result).to.contain('Adds commands to README.md in current directory.')
+    })
+
+    it('writes only subtopics to their own files', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-with-nested-topics')
+      const {result} = await runCommand<string>(
+        `readme --multi --nested-topics-depth 2 --plugin-directory ${rootPath} --dry-run`,
+      )
+      expect(result).to.contain('* [`oclif roottopic:subtopic1`](docs/roottopic/subtopic1.md) - Subtopic1 description')
+      expect(result).to.contain('* [`oclif roottopic:subtopic2`](docs/roottopic/subtopic2.md) - Subtopic2 description')
+    })
+
+    it('writes only subtopics to their own files with " " topic separator', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-with-nested-topics-with-space-separator')
+      const {result} = await runCommand<string>(
+        `readme --multi --nested-topics-depth 2 --plugin-directory ${rootPath} --dry-run`,
+      )
+      expect(result).to.contain('* [`oclif roottopic subtopic1`](docs/roottopic/subtopic1.md) - Subtopic1 description')
+      expect(result).to.contain('* [`oclif roottopic subtopic2`](docs/roottopic/subtopic2.md) - Subtopic2 description')
+    })
   })
 
   describe('with command that has an alias', () => {
-    const rootPath = path.join(__dirname, '../fixtures/cli-command-with-alias')
-    const readmePath = path.join(rootPath, 'README.md')
-    const originalReadme = fs.readFileSync(readmePath, 'utf8')
-    const aliasOutput = '`oclif hi`'
-
-    test
-    .stdout()
-    .finally(() => fs.writeFileSync(readmePath, originalReadme))
-    .stub(process, 'cwd', () => rootPath)
-    .command(['readme'])
-    .it('--aliases flag (default)', () => {
-      const newReadme = fs.readFileSync(readmePath, 'utf8')
-      expect(newReadme).to.contain(aliasOutput)
+    it('--aliases flag (default)', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-command-with-alias')
+      const {result} = await runCommand<string>(`readme --plugin-directory ${rootPath} --dry-run`)
+      expect(result).to.contain('`oclif hi`')
     })
 
-    test
-    .stdout()
-    .finally(() => fs.writeFileSync(readmePath, originalReadme))
-    .stub(process, 'cwd', () => rootPath)
-    .command(['readme', '--no-aliases'])
-    .it('--no-aliases flag', () => {
-      const newReadme = fs.readFileSync(readmePath, 'utf8')
-      expect(newReadme).not.to.contain(aliasOutput)
+    it('--no-aliases flag', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-command-with-alias')
+      const {result} = await runCommand<string>(`readme --plugin-directory ${rootPath} --no-aliases --dry-run`)
+      expect(result).to.not.contain('`oclif hi`')
     })
   })
 
   describe('with custom help that implements formatCommand', () => {
-    const rootPath = path.join(__dirname, '../fixtures/cli-with-custom-help')
-    const readmePath = path.join(rootPath, 'README.md')
-    const originalReadme = fs.readFileSync(readmePath, 'utf8')
-
-    test
-    .stdout()
-    .finally(() => fs.writeFileSync(readmePath, originalReadme))
-    .stub(process, 'cwd', () => rootPath)
-    .command(['readme'])
-    .it('writes custom help to the readme', () => {
-      const newReadme = fs.readFileSync(readmePath, 'utf8')
-
-      expect(newReadme).to.contain('Custom help for hello')
+    it('writes custom help to the readme', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-with-custom-help')
+      const {result} = await runCommand<string>(`readme --plugin-directory ${rootPath} --dry-run`)
+      expect(result).to.contain('Custom help for hello')
     })
   })
 
   describe('with custom help that implements command', () => {
-    const rootPath = path.join(__dirname, '../fixtures/cli-with-old-school-custom-help')
-    const readmePath = path.join(rootPath, 'README.md')
-    const originalReadme = fs.readFileSync(readmePath, 'utf8')
-
-    test
-    .stdout()
-    .finally(() => fs.writeFileSync(readmePath, originalReadme))
-    .stub(process, 'cwd', () => rootPath)
-    .command(['readme'])
-    .it('writes custom help to the readme', () => {
-      const newReadme = fs.readFileSync(readmePath, 'utf8')
-
-      expect(newReadme).to.contain('Custom help for hello')
+    it('writes custom help to the readme', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-with-old-school-custom-help')
+      const {result} = await runCommand<string>(`readme --plugin-directory ${rootPath} --dry-run`)
+      expect(result).to.contain('Custom help for hello')
     })
   })
 
   describe('with custom help that does not implement formatCommand', () => {
-    const rootPath = path.join(__dirname, '../fixtures/cli-with-custom-help-no-format-command')
-    const readmePath = path.join(rootPath, 'README.md')
-    const originalReadme = fs.readFileSync(readmePath, 'utf8')
-
-    test
-    .stdout()
-    .finally(() => fs.writeFileSync(readmePath, originalReadme))
-    .stub(process, 'cwd', () => rootPath)
-    .command(['readme'])
-    .catch(error => {
-      expect(error.message).to.contain('Please implement `formatCommand`')
+    it('prints a helpful error message', async () => {
+      const rootPath = join(__dirname, '../fixtures/cli-with-custom-help-no-format-command')
+      const {error} = await runCommand<string>(`readme --plugin-directory ${rootPath} --dry-run`)
+      expect(error?.message).to.contain('Please implement `formatCommand`')
     })
-    .it('prints a helpful error message')
   })
 })
diff --git a/test/unit/upload-util.test.ts b/test/unit/upload-util.test.ts
new file mode 100644
index 000000000..5cda8d198
--- /dev/null
+++ b/test/unit/upload-util.test.ts
@@ -0,0 +1,76 @@
+import {expect} from 'chai'
+
+import {templateShortKey} from '../../src/upload-util'
+
+describe('templateShortKey', () => {
+  it('should render a deb template', () => {
+    const key = templateShortKey('deb', {
+      arch: 'amd64',
+      bin: 'foo',
+      sha: '123456',
+      version: '1.2.3',
+      versionShaRevision: '1',
+    })
+    expect(key).to.equal('foo_1_amd64.deb')
+  })
+
+  it('should render a macos template', () => {
+    const key = templateShortKey('macos', {
+      arch: 'x64',
+      bin: 'foo',
+      sha: '123456',
+      version: '1.2.3',
+    })
+    expect(key).to.equal('foo-v1.2.3-123456-x64.pkg')
+  })
+
+  it('should render a win32 template', () => {
+    const key = templateShortKey('win32', {
+      arch: 'x64',
+      bin: 'foo',
+      sha: '123456',
+      version: '1.2.3',
+    })
+    expect(key).to.equal('foo-v1.2.3-123456-x64.exe')
+  })
+
+  it('should render a manifest template', () => {
+    const key = templateShortKey('manifest', {
+      arch: 'x64',
+      bin: 'foo',
+      platform: 'linux',
+      sha: '123456',
+      version: '1.2.3',
+    })
+    expect(key).to.equal('foo-v1.2.3-123456-linux-x64-buildmanifest')
+  })
+
+  it('should render a unversioned template', () => {
+    const key = templateShortKey('unversioned', {
+      arch: 'x64',
+      bin: 'foo',
+      ext: '.tar.gz',
+      platform: 'linux',
+    })
+    expect(key).to.equal('foo-linux-x64.tar.gz')
+  })
+
+  it('should render a versioned template', () => {
+    const key = templateShortKey('versioned', {
+      arch: 'x64',
+      bin: 'foo',
+      ext: '.tar.gz',
+      platform: 'linux',
+      sha: '123456',
+      version: '1.2.3',
+    })
+    expect(key).to.equal('foo-v1.2.3-123456-linux-x64.tar.gz')
+  })
+
+  it('should render a baseDir template', () => {
+    const key = templateShortKey('baseDir', {
+      bin: 'foo',
+    })
+    expect(key).to.equal('foo')
+  })
+})
diff --git a/test/unit/util.test.ts b/test/unit/util.test.ts
new file mode 100644
index 000000000..b2e65ae4e
--- /dev/null
+++ b/test/unit/util.test.ts
@@ -0,0 +1,32 @@
+import {expect} from 'chai'
+
+import {validateBin} from '../../src/util'
+
+describe('validateBin', () => {
+  const validBins = [
+    'foo',
+    'foo-bar',
+    'foo-bar_baz',
+    'foo_bar',
+    'foo123',
+    '123foo',
+    'foo-bar-',
+    'foo_bar_',
+    '-foo-bar',
+    '_foo_bar',
+    '123',
+  ]
+
+  const invalidBins = ['foo bar', 'foo!bar']
+  it('should return true for valid bins', () => {
+    for (const bin of validBins) {
+      expect(validateBin(bin), `${bin} to be valid`).to.be.true
+    }
+  })
+
+  it('should return false for invalid bins', () => {
+    for (const bin of invalidBins) {
+      expect(validateBin(bin), `${bin} to be invalid`).to.be.false
+    }
+  })
+})
diff --git a/tsconfig.json b/tsconfig.json
index c1b47e0bd..45e8006ad 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -5,17 +5,13 @@
   "compilerOptions": {
     "declaration": true,
     "forceConsistentCasingInFileNames": true,
-    "importHelpers": true,
-    "module": "commonjs",
+    "module": "Node16",
     "outDir": "./lib",
-    "rootDirs": [
-      "./src"
-    ],
+    "rootDirs": ["./src"],
     "strict": true,
-    "lib": ["ES2019"],
-    "target": "es2017"
+    "target": "es2022",
+    "skipLibCheck": true,
+    "moduleResolution": "Node16"
   },
-  "include": [
-    "./src/**/*"
-  ]
+  "include": ["./src/**/*"]
 }
diff --git a/yarn.lock b/yarn.lock
index 4ea7ad9e6..88dd2d75e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,221 +2,1337 @@
 # yarn lockfile v1
 
 
-"@babel/code-frame@7.12.11":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
-  integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
-  dependencies:
-    "@babel/highlight" "^7.10.4"
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431"
-  integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==
-  dependencies:
-    "@babel/highlight" "^7.16.0"
-
-"@babel/compat-data@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa"
-  integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==
-
-"@babel/core@^7.12.16":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4"
-  integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==
-  dependencies:
-    "@babel/code-frame" "^7.16.0"
-    "@babel/generator" "^7.16.0"
-    "@babel/helper-compilation-targets" "^7.16.0"
-    "@babel/helper-module-transforms" "^7.16.0"
-    "@babel/helpers" "^7.16.0"
-    "@babel/parser" "^7.16.0"
-    "@babel/template" "^7.16.0"
-    "@babel/traverse" "^7.16.0"
-    "@babel/types" "^7.16.0"
-    convert-source-map "^1.7.0"
-    debug "^4.1.0"
-    gensync "^1.0.0-beta.2"
-    json5 "^2.1.2"
-    semver "^6.3.0"
-    source-map "^0.5.0"
+"@ampproject/remapping@^2.2.0":
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
+  integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
+  dependencies:
+    "@jridgewell/gen-mapping" "^0.3.5"
+    "@jridgewell/trace-mapping" "^0.3.24"
 
-"@babel/eslint-parser@^7.12.16":
-  version "7.16.3"
-  resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz#2a6b1702f3f5aea48e00cea5a5bcc241c437e459"
-  integrity sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==
+"@aws-crypto/crc32@5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1"
+  integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==
   dependencies:
-    eslint-scope "^5.1.1"
-    eslint-visitor-keys "^2.1.0"
-    semver "^6.3.0"
+    "@aws-crypto/util" "^5.2.0"
+    "@aws-sdk/types" "^3.222.0"
+    tslib "^2.6.2"
+
+"@aws-crypto/crc32c@5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e"
+  integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==
+  dependencies:
+    "@aws-crypto/util" "^5.2.0"
+    "@aws-sdk/types" "^3.222.0"
+    tslib "^2.6.2"
 
-"@babel/generator@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2"
-  integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==
+"@aws-crypto/sha1-browser@5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4"
+  integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==
   dependencies:
-    "@babel/types" "^7.16.0"
-    jsesc "^2.5.1"
-    source-map "^0.5.0"
+    "@aws-crypto/supports-web-crypto" "^5.2.0"
+    "@aws-crypto/util" "^5.2.0"
+    "@aws-sdk/types" "^3.222.0"
+    "@aws-sdk/util-locate-window" "^3.0.0"
+    "@smithy/util-utf8" "^2.0.0"
+    tslib "^2.6.2"
 
-"@babel/helper-compilation-targets@^7.16.0":
-  version "7.16.3"
-  resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0"
-  integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==
+"@aws-crypto/sha256-browser@5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e"
+  integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==
+  dependencies:
+    "@aws-crypto/sha256-js" "^5.2.0"
+    "@aws-crypto/supports-web-crypto" "^5.2.0"
+    "@aws-crypto/util" "^5.2.0"
+    "@aws-sdk/types" "^3.222.0"
+    "@aws-sdk/util-locate-window" "^3.0.0"
+    "@smithy/util-utf8" "^2.0.0"
+    tslib "^2.6.2"
+
+"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042"
+  integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==
   dependencies:
-    "@babel/compat-data" "^7.16.0"
-    "@babel/helper-validator-option" "^7.14.5"
-    browserslist "^4.17.5"
-    semver "^6.3.0"
+    "@aws-crypto/util" "^5.2.0"
+    "@aws-sdk/types" "^3.222.0"
+    tslib "^2.6.2"
 
-"@babel/helper-function-name@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481"
-  integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==
-  dependencies:
-    "@babel/helper-get-function-arity" "^7.16.0"
-    "@babel/template" "^7.16.0"
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-get-function-arity@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa"
-  integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-hoist-variables@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a"
-  integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-member-expression-to-functions@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4"
-  integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-module-imports@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3"
-  integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-module-transforms@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5"
-  integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==
-  dependencies:
-    "@babel/helper-module-imports" "^7.16.0"
-    "@babel/helper-replace-supers" "^7.16.0"
-    "@babel/helper-simple-access" "^7.16.0"
-    "@babel/helper-split-export-declaration" "^7.16.0"
-    "@babel/helper-validator-identifier" "^7.15.7"
-    "@babel/template" "^7.16.0"
-    "@babel/traverse" "^7.16.0"
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-optimise-call-expression@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338"
-  integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-replace-supers@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17"
-  integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==
-  dependencies:
-    "@babel/helper-member-expression-to-functions" "^7.16.0"
-    "@babel/helper-optimise-call-expression" "^7.16.0"
-    "@babel/traverse" "^7.16.0"
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-simple-access@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517"
-  integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-split-export-declaration@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438"
-  integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==
-  dependencies:
-    "@babel/types" "^7.16.0"
-
-"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
-  version "7.15.7"
-  resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
-  integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
-
-"@babel/helper-validator-option@^7.14.5":
-  version "7.14.5"
-  resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
-  integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
-
-"@babel/helpers@^7.16.0":
-  version "7.16.3"
-  resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c"
-  integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==
-  dependencies:
-    "@babel/template" "^7.16.0"
-    "@babel/traverse" "^7.16.3"
-    "@babel/types" "^7.16.0"
-
-"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
-  integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.15.7"
-    chalk "^2.0.0"
-    js-tokens "^4.0.0"
+"@aws-crypto/supports-web-crypto@^5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb"
+  integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==
+  dependencies:
+    tslib "^2.6.2"
+
+"@aws-crypto/util@5.2.0", "@aws-crypto/util@^5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da"
+  integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==
+  dependencies:
+    "@aws-sdk/types" "^3.222.0"
+    "@smithy/util-utf8" "^2.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-cloudfront@^3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudfront/-/client-cloudfront-3.699.0.tgz#0dddf47efd611377637d2e718481ce9f2b68a51b"
+  integrity sha512-0tHdtyJ9xmlNsfZppYEflrtskxZjbwPCD4DzcFXRxXEteDtZhRshF1YGAEYUZ7Iad4ps+XbQOEiAJmWW+G2QFw==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.699.0"
+    "@aws-sdk/client-sts" "3.699.0"
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/credential-provider-node" "3.699.0"
+    "@aws-sdk/middleware-host-header" "3.696.0"
+    "@aws-sdk/middleware-logger" "3.696.0"
+    "@aws-sdk/middleware-recursion-detection" "3.696.0"
+    "@aws-sdk/middleware-user-agent" "3.696.0"
+    "@aws-sdk/region-config-resolver" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@aws-sdk/util-endpoints" "3.696.0"
+    "@aws-sdk/util-user-agent-browser" "3.696.0"
+    "@aws-sdk/util-user-agent-node" "3.696.0"
+    "@aws-sdk/xml-builder" "3.696.0"
+    "@smithy/config-resolver" "^3.0.12"
+    "@smithy/core" "^2.5.3"
+    "@smithy/fetch-http-handler" "^4.1.1"
+    "@smithy/hash-node" "^3.0.10"
+    "@smithy/invalid-dependency" "^3.0.10"
+    "@smithy/middleware-content-length" "^3.0.12"
+    "@smithy/middleware-endpoint" "^3.2.3"
+    "@smithy/middleware-retry" "^3.0.27"
+    "@smithy/middleware-serde" "^3.0.10"
+    "@smithy/middleware-stack" "^3.0.10"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/node-http-handler" "^3.3.1"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/smithy-client" "^3.4.4"
+    "@smithy/types" "^3.7.1"
+    "@smithy/url-parser" "^3.0.10"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.27"
+    "@smithy/util-defaults-mode-node" "^3.0.27"
+    "@smithy/util-endpoints" "^2.1.6"
+    "@smithy/util-middleware" "^3.0.10"
+    "@smithy/util-retry" "^3.0.10"
+    "@smithy/util-stream" "^3.3.1"
+    "@smithy/util-utf8" "^3.0.0"
+    "@smithy/util-waiter" "^3.1.9"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-s3@^3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.712.0.tgz#2911e9c7a65fd9e5679926fdb838311a0b29e37c"
+  integrity sha512-Hq1IIwOFutmHtTz3mROR1XhTDL8rxcYbYw3ajjgeMJB5tjcvodpfkfz/L4dxXZMwqylWf6SNQNAiaGh5mlsGGQ==
+  dependencies:
+    "@aws-crypto/sha1-browser" "5.2.0"
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.712.0"
+    "@aws-sdk/client-sts" "3.712.0"
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/credential-provider-node" "3.712.0"
+    "@aws-sdk/middleware-bucket-endpoint" "3.709.0"
+    "@aws-sdk/middleware-expect-continue" "3.709.0"
+    "@aws-sdk/middleware-flexible-checksums" "3.709.0"
+    "@aws-sdk/middleware-host-header" "3.709.0"
+    "@aws-sdk/middleware-location-constraint" "3.709.0"
+    "@aws-sdk/middleware-logger" "3.709.0"
+    "@aws-sdk/middleware-recursion-detection" "3.709.0"
+    "@aws-sdk/middleware-sdk-s3" "3.709.0"
+    "@aws-sdk/middleware-ssec" "3.709.0"
+    "@aws-sdk/middleware-user-agent" "3.709.0"
+    "@aws-sdk/region-config-resolver" "3.709.0"
+    "@aws-sdk/signature-v4-multi-region" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-endpoints" "3.709.0"
+    "@aws-sdk/util-user-agent-browser" "3.709.0"
+    "@aws-sdk/util-user-agent-node" "3.712.0"
+    "@aws-sdk/xml-builder" "3.709.0"
+    "@smithy/config-resolver" "^3.0.13"
+    "@smithy/core" "^2.5.5"
+    "@smithy/eventstream-serde-browser" "^3.0.14"
+    "@smithy/eventstream-serde-config-resolver" "^3.0.11"
+    "@smithy/eventstream-serde-node" "^3.0.13"
+    "@smithy/fetch-http-handler" "^4.1.2"
+    "@smithy/hash-blob-browser" "^3.1.10"
+    "@smithy/hash-node" "^3.0.11"
+    "@smithy/hash-stream-node" "^3.1.10"
+    "@smithy/invalid-dependency" "^3.0.11"
+    "@smithy/md5-js" "^3.0.11"
+    "@smithy/middleware-content-length" "^3.0.13"
+    "@smithy/middleware-endpoint" "^3.2.5"
+    "@smithy/middleware-retry" "^3.0.30"
+    "@smithy/middleware-serde" "^3.0.11"
+    "@smithy/middleware-stack" "^3.0.11"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/node-http-handler" "^3.3.2"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/url-parser" "^3.0.11"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.30"
+    "@smithy/util-defaults-mode-node" "^3.0.30"
+    "@smithy/util-endpoints" "^2.1.7"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-retry" "^3.0.11"
+    "@smithy/util-stream" "^3.3.2"
+    "@smithy/util-utf8" "^3.0.0"
+    "@smithy/util-waiter" "^3.2.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-sso-oidc@3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.699.0.tgz#a35665e681abd518b56330bc7dab63041fbdaf83"
+  integrity sha512-u8a1GorY5D1l+4FQAf4XBUC1T10/t7neuwT21r0ymrtMFSK2a9QqVHKMoLkvavAwyhJnARSBM9/UQC797PFOFw==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/credential-provider-node" "3.699.0"
+    "@aws-sdk/middleware-host-header" "3.696.0"
+    "@aws-sdk/middleware-logger" "3.696.0"
+    "@aws-sdk/middleware-recursion-detection" "3.696.0"
+    "@aws-sdk/middleware-user-agent" "3.696.0"
+    "@aws-sdk/region-config-resolver" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@aws-sdk/util-endpoints" "3.696.0"
+    "@aws-sdk/util-user-agent-browser" "3.696.0"
+    "@aws-sdk/util-user-agent-node" "3.696.0"
+    "@smithy/config-resolver" "^3.0.12"
+    "@smithy/core" "^2.5.3"
+    "@smithy/fetch-http-handler" "^4.1.1"
+    "@smithy/hash-node" "^3.0.10"
+    "@smithy/invalid-dependency" "^3.0.10"
+    "@smithy/middleware-content-length" "^3.0.12"
+    "@smithy/middleware-endpoint" "^3.2.3"
+    "@smithy/middleware-retry" "^3.0.27"
+    "@smithy/middleware-serde" "^3.0.10"
+    "@smithy/middleware-stack" "^3.0.10"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/node-http-handler" "^3.3.1"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/smithy-client" "^3.4.4"
+    "@smithy/types" "^3.7.1"
+    "@smithy/url-parser" "^3.0.10"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.27"
+    "@smithy/util-defaults-mode-node" "^3.0.27"
+    "@smithy/util-endpoints" "^2.1.6"
+    "@smithy/util-middleware" "^3.0.10"
+    "@smithy/util-retry" "^3.0.10"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-sso-oidc@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.712.0.tgz#ba3c9ae1b74f3c44e406397c60c812bb9e2e98a4"
+  integrity sha512-xNFrG9syrG6pxUP7Ld/nu3afQ9+rbJM9qrE+wDNz4VnNZ3vLiJty4fH85zBFhOQ5OF2DIJTWsFzXGi2FYjsCMA==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/credential-provider-node" "3.712.0"
+    "@aws-sdk/middleware-host-header" "3.709.0"
+    "@aws-sdk/middleware-logger" "3.709.0"
+    "@aws-sdk/middleware-recursion-detection" "3.709.0"
+    "@aws-sdk/middleware-user-agent" "3.709.0"
+    "@aws-sdk/region-config-resolver" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-endpoints" "3.709.0"
+    "@aws-sdk/util-user-agent-browser" "3.709.0"
+    "@aws-sdk/util-user-agent-node" "3.712.0"
+    "@smithy/config-resolver" "^3.0.13"
+    "@smithy/core" "^2.5.5"
+    "@smithy/fetch-http-handler" "^4.1.2"
+    "@smithy/hash-node" "^3.0.11"
+    "@smithy/invalid-dependency" "^3.0.11"
+    "@smithy/middleware-content-length" "^3.0.13"
+    "@smithy/middleware-endpoint" "^3.2.5"
+    "@smithy/middleware-retry" "^3.0.30"
+    "@smithy/middleware-serde" "^3.0.11"
+    "@smithy/middleware-stack" "^3.0.11"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/node-http-handler" "^3.3.2"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/url-parser" "^3.0.11"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.30"
+    "@smithy/util-defaults-mode-node" "^3.0.30"
+    "@smithy/util-endpoints" "^2.1.7"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-retry" "^3.0.11"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-sso@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.696.0.tgz#a9251e88cdfc91fb14191f760f68baa835e88f1c"
+  integrity sha512-q5TTkd08JS0DOkHfUL853tuArf7NrPeqoS5UOvqJho8ibV9Ak/a/HO4kNvy9Nj3cib/toHYHsQIEtecUPSUUrQ==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/middleware-host-header" "3.696.0"
+    "@aws-sdk/middleware-logger" "3.696.0"
+    "@aws-sdk/middleware-recursion-detection" "3.696.0"
+    "@aws-sdk/middleware-user-agent" "3.696.0"
+    "@aws-sdk/region-config-resolver" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@aws-sdk/util-endpoints" "3.696.0"
+    "@aws-sdk/util-user-agent-browser" "3.696.0"
+    "@aws-sdk/util-user-agent-node" "3.696.0"
+    "@smithy/config-resolver" "^3.0.12"
+    "@smithy/core" "^2.5.3"
+    "@smithy/fetch-http-handler" "^4.1.1"
+    "@smithy/hash-node" "^3.0.10"
+    "@smithy/invalid-dependency" "^3.0.10"
+    "@smithy/middleware-content-length" "^3.0.12"
+    "@smithy/middleware-endpoint" "^3.2.3"
+    "@smithy/middleware-retry" "^3.0.27"
+    "@smithy/middleware-serde" "^3.0.10"
+    "@smithy/middleware-stack" "^3.0.10"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/node-http-handler" "^3.3.1"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/smithy-client" "^3.4.4"
+    "@smithy/types" "^3.7.1"
+    "@smithy/url-parser" "^3.0.10"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.27"
+    "@smithy/util-defaults-mode-node" "^3.0.27"
+    "@smithy/util-endpoints" "^2.1.6"
+    "@smithy/util-middleware" "^3.0.10"
+    "@smithy/util-retry" "^3.0.10"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-sso@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.712.0.tgz#9644585700f5d96a16151bdb5387755adc524db8"
+  integrity sha512-tBo/eW3YpZ9f3Q1qA7aA8uliNFJJX0OP7R2IUJ8t6rqVTk15wWCEPNmXzUZKgruDnKUfCaF4+r9q/Yy4fBc9PA==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/middleware-host-header" "3.709.0"
+    "@aws-sdk/middleware-logger" "3.709.0"
+    "@aws-sdk/middleware-recursion-detection" "3.709.0"
+    "@aws-sdk/middleware-user-agent" "3.709.0"
+    "@aws-sdk/region-config-resolver" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-endpoints" "3.709.0"
+    "@aws-sdk/util-user-agent-browser" "3.709.0"
+    "@aws-sdk/util-user-agent-node" "3.712.0"
+    "@smithy/config-resolver" "^3.0.13"
+    "@smithy/core" "^2.5.5"
+    "@smithy/fetch-http-handler" "^4.1.2"
+    "@smithy/hash-node" "^3.0.11"
+    "@smithy/invalid-dependency" "^3.0.11"
+    "@smithy/middleware-content-length" "^3.0.13"
+    "@smithy/middleware-endpoint" "^3.2.5"
+    "@smithy/middleware-retry" "^3.0.30"
+    "@smithy/middleware-serde" "^3.0.11"
+    "@smithy/middleware-stack" "^3.0.11"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/node-http-handler" "^3.3.2"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/url-parser" "^3.0.11"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.30"
+    "@smithy/util-defaults-mode-node" "^3.0.30"
+    "@smithy/util-endpoints" "^2.1.7"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-retry" "^3.0.11"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-sts@3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.699.0.tgz#9419be6bbf3809008128117afea8b9129b5a959d"
+  integrity sha512-++lsn4x2YXsZPIzFVwv3fSUVM55ZT0WRFmPeNilYIhZClxHLmVAWKH4I55cY9ry60/aTKYjzOXkWwyBKGsGvQg==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.699.0"
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/credential-provider-node" "3.699.0"
+    "@aws-sdk/middleware-host-header" "3.696.0"
+    "@aws-sdk/middleware-logger" "3.696.0"
+    "@aws-sdk/middleware-recursion-detection" "3.696.0"
+    "@aws-sdk/middleware-user-agent" "3.696.0"
+    "@aws-sdk/region-config-resolver" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@aws-sdk/util-endpoints" "3.696.0"
+    "@aws-sdk/util-user-agent-browser" "3.696.0"
+    "@aws-sdk/util-user-agent-node" "3.696.0"
+    "@smithy/config-resolver" "^3.0.12"
+    "@smithy/core" "^2.5.3"
+    "@smithy/fetch-http-handler" "^4.1.1"
+    "@smithy/hash-node" "^3.0.10"
+    "@smithy/invalid-dependency" "^3.0.10"
+    "@smithy/middleware-content-length" "^3.0.12"
+    "@smithy/middleware-endpoint" "^3.2.3"
+    "@smithy/middleware-retry" "^3.0.27"
+    "@smithy/middleware-serde" "^3.0.10"
+    "@smithy/middleware-stack" "^3.0.10"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/node-http-handler" "^3.3.1"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/smithy-client" "^3.4.4"
+    "@smithy/types" "^3.7.1"
+    "@smithy/url-parser" "^3.0.10"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.27"
+    "@smithy/util-defaults-mode-node" "^3.0.27"
+    "@smithy/util-endpoints" "^2.1.6"
+    "@smithy/util-middleware" "^3.0.10"
+    "@smithy/util-retry" "^3.0.10"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-sts@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.712.0.tgz#455daebd946369c60c7795efbd7a6b5981d0662a"
+  integrity sha512-gIO6BD+hkEe3GKQhbiFP0zcNQv0EkP1Cl9SOstxS+X9CeudEgVX/xEPUjyoFVkfkntPBJ1g0I1u5xOzzRExl4g==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.712.0"
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/credential-provider-node" "3.712.0"
+    "@aws-sdk/middleware-host-header" "3.709.0"
+    "@aws-sdk/middleware-logger" "3.709.0"
+    "@aws-sdk/middleware-recursion-detection" "3.709.0"
+    "@aws-sdk/middleware-user-agent" "3.709.0"
+    "@aws-sdk/region-config-resolver" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-endpoints" "3.709.0"
+    "@aws-sdk/util-user-agent-browser" "3.709.0"
+    "@aws-sdk/util-user-agent-node" "3.712.0"
+    "@smithy/config-resolver" "^3.0.13"
+    "@smithy/core" "^2.5.5"
+    "@smithy/fetch-http-handler" "^4.1.2"
+    "@smithy/hash-node" "^3.0.11"
+    "@smithy/invalid-dependency" "^3.0.11"
+    "@smithy/middleware-content-length" "^3.0.13"
+    "@smithy/middleware-endpoint" "^3.2.5"
+    "@smithy/middleware-retry" "^3.0.30"
+    "@smithy/middleware-serde" "^3.0.11"
+    "@smithy/middleware-stack" "^3.0.11"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/node-http-handler" "^3.3.2"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/url-parser" "^3.0.11"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-body-length-node" "^3.0.0"
+    "@smithy/util-defaults-mode-browser" "^3.0.30"
+    "@smithy/util-defaults-mode-node" "^3.0.30"
+    "@smithy/util-endpoints" "^2.1.7"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-retry" "^3.0.11"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/core@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.696.0.tgz#bdf306bdc019f485738d91d8838eec877861dd26"
+  integrity sha512-3c9III1k03DgvRZWg8vhVmfIXPG6hAciN9MzQTzqGngzWAELZF/WONRTRQuDFixVtarQatmLHYVw/atGeA2Byw==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/core" "^2.5.3"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/signature-v4" "^4.2.2"
+    "@smithy/smithy-client" "^3.4.4"
+    "@smithy/types" "^3.7.1"
+    "@smithy/util-middleware" "^3.0.10"
+    fast-xml-parser "4.4.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/core@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.709.0.tgz#d2b3d5b90f6614e3afc109ebdcaaedbb54c2d68b"
+  integrity sha512-7kuSpzdOTAE026j85wq/fN9UDZ70n0OHw81vFqMWwlEFtm5IQ/MRCLKcC4HkXxTdfy1PqFlmoXxWqeBa15tujw==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/core" "^2.5.5"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/signature-v4" "^4.2.4"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-middleware" "^3.0.11"
+    fast-xml-parser "4.4.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-env@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.696.0.tgz#afad9e61cd03da404bb03e5bce83c49736b85271"
+  integrity sha512-T9iMFnJL7YTlESLpVFT3fg1Lkb1lD+oiaIC8KMpepb01gDUBIpj9+Y+pA/cgRWW0yRxmkDXNazAE2qQTVFGJzA==
+  dependencies:
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-env@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.709.0.tgz#a7f75375d8a413f9ab2bc42f743b943da6d3362d"
+  integrity sha512-ZMAp9LSikvHDFVa84dKpQmow6wsg956Um20cKuioPpX2GGreJFur7oduD+tRJT6FtIOHn+64YH+0MwiXLhsaIQ==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-http@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.696.0.tgz#535756f9f427fbe851a8c1db7b0e3aaaf7790ba2"
+  integrity sha512-GV6EbvPi2eq1+WgY/o2RFA3P7HGmnkIzCNmhwtALFlqMroLYWKE7PSeHw66Uh1dFQeVESn0/+hiUNhu1mB0emA==
+  dependencies:
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/fetch-http-handler" "^4.1.1"
+    "@smithy/node-http-handler" "^3.3.1"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/smithy-client" "^3.4.4"
+    "@smithy/types" "^3.7.1"
+    "@smithy/util-stream" "^3.3.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-http@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.709.0.tgz#a378cbcc4cf373cc277944f1e84e9952f3884f5d"
+  integrity sha512-lIS7XLwCOyJnLD70f+VIRr8DNV1HPQe9oN6aguYrhoczqz7vDiVZLe3lh714cJqq9rdxzFypK5DqKHmcscMEPQ==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/fetch-http-handler" "^4.1.2"
+    "@smithy/node-http-handler" "^3.3.2"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-stream" "^3.3.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-ini@3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.699.0.tgz#7919a454b05c5446d04a0d3270807046a029ee30"
+  integrity sha512-dXmCqjJnKmG37Q+nLjPVu22mNkrGHY8hYoOt3Jo9R2zr5MYV7s/NHsCHr+7E+BZ+tfZYLRPeB1wkpTeHiEcdRw==
+  dependencies:
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/credential-provider-env" "3.696.0"
+    "@aws-sdk/credential-provider-http" "3.696.0"
+    "@aws-sdk/credential-provider-process" "3.696.0"
+    "@aws-sdk/credential-provider-sso" "3.699.0"
+    "@aws-sdk/credential-provider-web-identity" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/credential-provider-imds" "^3.2.6"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/shared-ini-file-loader" "^3.1.10"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-ini@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.712.0.tgz#21d94d3fbaf5cece29bc62d56cf7f0dfb8b7d25e"
+  integrity sha512-sTsdQ/Fm/suqMdpjhMuss/5uKL18vcuWnNTQVrG9iGNRqZLbq65MXquwbUpgzfoUmIcH+4CrY6H2ebpTIECIag==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/credential-provider-env" "3.709.0"
+    "@aws-sdk/credential-provider-http" "3.709.0"
+    "@aws-sdk/credential-provider-process" "3.709.0"
+    "@aws-sdk/credential-provider-sso" "3.712.0"
+    "@aws-sdk/credential-provider-web-identity" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/credential-provider-imds" "^3.2.8"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-node@3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.699.0.tgz#6a1e32a49a7fa71d10c85a927267d1782444def1"
+  integrity sha512-MmEmNDo1bBtTgRmdNfdQksXu4uXe66s0p1hi1YPrn1h59Q605eq/xiWbGL6/3KdkViH6eGUuABeV2ODld86ylg==
+  dependencies:
+    "@aws-sdk/credential-provider-env" "3.696.0"
+    "@aws-sdk/credential-provider-http" "3.696.0"
+    "@aws-sdk/credential-provider-ini" "3.699.0"
+    "@aws-sdk/credential-provider-process" "3.696.0"
+    "@aws-sdk/credential-provider-sso" "3.699.0"
+    "@aws-sdk/credential-provider-web-identity" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/credential-provider-imds" "^3.2.6"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/shared-ini-file-loader" "^3.1.10"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-node@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.712.0.tgz#6f017382b1182578cf62798310f42264b652e36e"
+  integrity sha512-gXrHymW3rMRYORkPVQwL8Gi5Lu92F16SoZR543x03qCi7rm00oL9tRD85ACxkhprS1Wh8lUIUMNoeiwnYWTNuQ==
+  dependencies:
+    "@aws-sdk/credential-provider-env" "3.709.0"
+    "@aws-sdk/credential-provider-http" "3.709.0"
+    "@aws-sdk/credential-provider-ini" "3.712.0"
+    "@aws-sdk/credential-provider-process" "3.709.0"
+    "@aws-sdk/credential-provider-sso" "3.712.0"
+    "@aws-sdk/credential-provider-web-identity" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/credential-provider-imds" "^3.2.8"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-process@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.696.0.tgz#45da7b948aa40987b413c7c0d4a8125bf1433651"
+  integrity sha512-mL1RcFDe9sfmyU5K1nuFkO8UiJXXxLX4JO1gVaDIOvPqwStpUAwi3A1BoeZhWZZNQsiKI810RnYGo0E0WB/hUA==
+  dependencies:
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/shared-ini-file-loader" "^3.1.10"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-process@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.709.0.tgz#2521f810590f0874c54cc842d3d56f455a728325"
+  integrity sha512-IAC+jPlGQII6jhIylHOwh3RgSobqlgL59nw2qYTURr8hMCI0Z1p5y2ee646HTVt4WeCYyzUAXfxr6YI/Vitv+Q==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-sso@3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.699.0.tgz#515e2ecd407bace3141b8b192505631de415667e"
+  integrity sha512-Ekp2cZG4pl9D8+uKWm4qO1xcm8/MeiI8f+dnlZm8aQzizeC+aXYy9GyoclSf6daK8KfRPiRfM7ZHBBL5dAfdMA==
+  dependencies:
+    "@aws-sdk/client-sso" "3.696.0"
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/token-providers" "3.699.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/shared-ini-file-loader" "^3.1.10"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-sso@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.712.0.tgz#d29c8c14e2460a817ed2eb7ad5d205d7914817af"
+  integrity sha512-8lCMxY7Lb9VK9qdlNXRJXE3W1UDVURnJZ3a4XWYNY6yr1TfQaN40mMyXX1oNlXXJtMV0szRvjM8dZj37E/ESAw==
+  dependencies:
+    "@aws-sdk/client-sso" "3.712.0"
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/token-providers" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-web-identity@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.696.0.tgz#3f97c00bd3bc7cfd988e098af67ff7c8392ce188"
+  integrity sha512-XJ/CVlWChM0VCoc259vWguFUjJDn/QwDqHwbx+K9cg3v6yrqXfK5ai+p/6lx0nQpnk4JzPVeYYxWRpaTsGC9rg==
+  dependencies:
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-web-identity@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.709.0.tgz#c2b03541cb57ae4c7d6abdca98f99a6a56833ea6"
+  integrity sha512-2lbDfE0IQ6gma/7BB2JpkjW5G0wGe4AS0x80oybYAYYviJmUtIR3Cn2pXun6bnAWElt4wYKl4su7oC36rs5rNA==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-bucket-endpoint@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.709.0.tgz#a69bdebfebb7b5b174d3a396f2361f5025d168f4"
+  integrity sha512-03+tJOd7KIZOiqWH7Z8BOfQIWkKJgjcpKOJKZ6FR2KjWGUOE1G+bo11wF4UuHQ0RmpKnApt+pQghZmSnE7WEeg==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-arn-parser" "3.693.0"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-config-provider" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-expect-continue@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.709.0.tgz#a7fec776da9de32e15088badfc09d69118f5d5ab"
+  integrity sha512-Tbl/DFvE4rHl8lMb9IzetwK4tf5R3VeHZkvEXQalsWoK0tbEQ8kXWi7wAYO4qbE7bFVvaxKX+irjJjTxf3BrCQ==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-flexible-checksums@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.709.0.tgz#f0fb543c2db724cb43bae215ff0aea942d06a967"
+  integrity sha512-wbYm9tkyCaqMeU82yjaXw7V5BxCSlSLNupENW63LC7Fvyo/aQzj6LjSMHcBpR2QwjBEhXCtF47L7aQ8SPTNhdw==
+  dependencies:
+    "@aws-crypto/crc32" "5.2.0"
+    "@aws-crypto/crc32c" "5.2.0"
+    "@aws-crypto/util" "5.2.0"
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/is-array-buffer" "^3.0.0"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-stream" "^3.3.2"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-host-header@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.696.0.tgz#20aae0efeb973ca1a6db1b1014acbcdd06ad472e"
+  integrity sha512-zELJp9Ta2zkX7ELggMN9qMCgekqZhFC5V2rOr4hJDEb/Tte7gpfKSObAnw/3AYiVqt36sjHKfdkoTsuwGdEoDg==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-host-header@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.709.0.tgz#f44f5c62f9bd7e5a443603fed68143d2d9725219"
+  integrity sha512-8gQYCYAaIw4lOCd5WYdf15Y/61MgRsAnrb2eiTl+icMlUOOzl8aOl5iDwm/Idp0oHZTflwxM4XSvGXO83PRWcw==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-location-constraint@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.709.0.tgz#4437d3d3cfbbdfca60664b1f237d600b94fd06a5"
+  integrity sha512-5YQWPXfZq7OE0jB2G0PP8K10GBod/YPJXb+1CfJS6FbQaglRoIm8KZmVEvJNnptSKyGtE62veeCcCQcfAUfFig==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-logger@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.696.0.tgz#79d68b7e5ba181511ade769b11165bfb7527181e"
+  integrity sha512-KhkHt+8AjCxcR/5Zp3++YPJPpFQzxpr+jmONiT/Jw2yqnSngZ0Yspm5wGoRx2hS1HJbyZNuaOWEGuJoxLeBKfA==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-logger@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.709.0.tgz#b9a0b016b7ae09cb502cc4faf45964d4b5745824"
+  integrity sha512-jDoGSccXv9zebnpUoisjWd5u5ZPIalrmm6TjvPzZ8UqzQt3Beiz0tnQwmxQD6KRc7ADweWP5Ntiqzbw9xpVajg==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-recursion-detection@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.696.0.tgz#aa437d645d74cb785905162266741125c18f182a"
+  integrity sha512-si/maV3Z0hH7qa99f9ru2xpS5HlfSVcasRlNUXKSDm611i7jFMWwGNLUOXFAOLhXotPX5G3Z6BLwL34oDeBMug==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-recursion-detection@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.709.0.tgz#d7dc253d4858d496caeb12dd6cddd87b250fb98b"
+  integrity sha512-PObL/wLr4lkfbQ0yXUWaoCWu/jcwfwZzCjsUiXW/H6hW9b/00enZxmx7OhtJYaR6xmh/Lcx5wbhIoDCbzdv0tw==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-sdk-s3@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.709.0.tgz#b6f22c77e64760869eb06255af58376f879742b2"
+  integrity sha512-FwtOG9t9xsLoLOQZ6qAdsWOjx9dsO6t28IjIDV1l6Ixiu2oC0Yks7goONjJUH0IDE4pDDDGzmuq0sn1XtHhheA==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-arn-parser" "3.693.0"
+    "@smithy/core" "^2.5.5"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/signature-v4" "^4.2.4"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-config-provider" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-stream" "^3.3.2"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-ssec@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.709.0.tgz#bbf5253cdce45ed2759a108fd924fff4b8e049d5"
+  integrity sha512-2muiLe7YkmlwZp2SKz+goZrDThGfRq3o0FcJF3Puc0XGmcEPEDjih537mCoTrGgcXNFlBc7YChd84r3t72ySaQ==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-user-agent@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.696.0.tgz#626c89300f6b3af5aefc1cb6d9ac19eebf8bc97d"
+  integrity sha512-Lvyj8CTyxrHI6GHd2YVZKIRI5Fmnugt3cpJo0VrKKEgK5zMySwEZ1n4dqPK6czYRWKd5+WnYHYAuU+Wdk6Jsjw==
+  dependencies:
+    "@aws-sdk/core" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@aws-sdk/util-endpoints" "3.696.0"
+    "@smithy/core" "^2.5.3"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-user-agent@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.709.0.tgz#2a467f14b3f4a9270bcdfde32e3d4e38701aaafe"
+  integrity sha512-ooc9ZJvgkjPhi9q05XwSfNTXkEBEIfL4hleo5rQBKwHG3aTHvwOM7LLzhdX56QZVa6sorPBp6fwULuRDSqiQHw==
+  dependencies:
+    "@aws-sdk/core" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@aws-sdk/util-endpoints" "3.709.0"
+    "@smithy/core" "^2.5.5"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/region-config-resolver@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.696.0.tgz#146c428702c09db75df5234b5d40ce49d147d0cf"
+  integrity sha512-7EuH142lBXjI8yH6dVS/CZeiK/WZsmb/8zP6bQbVYpMrppSTgB3MzZZdxVZGzL5r8zPQOU10wLC4kIMy0qdBVQ==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/types" "^3.7.1"
+    "@smithy/util-config-provider" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.10"
+    tslib "^2.6.2"
+
+"@aws-sdk/region-config-resolver@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.709.0.tgz#64547b333842e5804e1793e4d6d29578c0b34a68"
+  integrity sha512-/NoCAMEVKAg3kBKOrNtgOfL+ECt6nrl+L7q2SyYmrcY4tVCmwuECVqewQaHc03fTnJijfKLccw0Fj+6wOCnB6w==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-config-provider" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.11"
+    tslib "^2.6.2"
+
+"@aws-sdk/signature-v4-multi-region@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.709.0.tgz#0c6f9d3e2978158163b63a4085356616237223c9"
+  integrity sha512-m0vhJEy6SLbjL11K9cHzX/ZhCIj//1GkTbYk2d4tTQFSuPyJEkjmoeHk9dYm2mJy0wH48j29OJadI1JUsR5bOw==
+  dependencies:
+    "@aws-sdk/middleware-sdk-s3" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/signature-v4" "^4.2.4"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/token-providers@3.699.0":
+  version "3.699.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.699.0.tgz#354990dd52d651c1f7a64c4c0894c868cdc81de2"
+  integrity sha512-kuiEW9DWs7fNos/SM+y58HCPhcIzm1nEZLhe2/7/6+TvAYLuEWURYsbK48gzsxXlaJ2k/jGY3nIsA7RptbMOwA==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/property-provider" "^3.1.9"
+    "@smithy/shared-ini-file-loader" "^3.1.10"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/token-providers@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.709.0.tgz#56305ab187660a711fd172c329dc953ca754fa80"
+  integrity sha512-q5Ar6k71nci43IbULFgC8a89d/3EHpmd7HvBzqVGRcHnoPwh8eZDBfbBXKH83NGwcS1qPSRYiDbVfeWPm4/1jA==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/types@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.696.0.tgz#559c3df74dc389b6f40ba6ec6daffeab155330cd"
+  integrity sha512-9rTvUJIAj5d3//U5FDPWGJ1nFJLuWb30vugGOrWk7aNZ6y9tuA3PI7Cc9dP8WEXKVyK1vuuk8rSFP2iqXnlgrw==
+  dependencies:
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/types@3.709.0", "@aws-sdk/types@^3.222.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.709.0.tgz#f8d7ab07e253d3ed0e3b360e09fc67c7430a73b9"
+  integrity sha512-ArtLTMxgjf13Kfu3gWH3Ez9Q5TkDdcRZUofpKH3pMGB/C6KAbeSCtIIDKfoRTUABzyGlPyCrZdnFjKyH+ypIpg==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/util-arn-parser@3.693.0":
+  version "3.693.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.693.0.tgz#8dae27eb822ab4f88be28bb3c0fc11f1f13d3948"
+  integrity sha512-WC8x6ca+NRrtpAH64rWu+ryDZI3HuLwlEr8EU6/dbC/pt+r/zC0PBoC15VEygUaBA+isppCikQpGyEDu0Yj7gQ==
+  dependencies:
+    tslib "^2.6.2"
+
+"@aws-sdk/util-endpoints@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.696.0.tgz#79e18714419a423a64094381b849214499f00577"
+  integrity sha512-T5s0IlBVX+gkb9g/I6CLt4yAZVzMSiGnbUqWihWsHvQR1WOoIcndQy/Oz/IJXT9T2ipoy7a80gzV6a5mglrioA==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/types" "^3.7.1"
+    "@smithy/util-endpoints" "^2.1.6"
+    tslib "^2.6.2"
+
+"@aws-sdk/util-endpoints@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.709.0.tgz#32dfe339d78b699ada68392bbb3bec25441bae5c"
+  integrity sha512-Mbc7AtL5WGCTKC16IGeUTz+sjpC3ptBda2t0CcK0kMVw3THDdcSq6ZlNKO747cNqdbwUvW34oHteUiHv4/z88Q==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-endpoints" "^2.1.7"
+    tslib "^2.6.2"
+
+"@aws-sdk/util-locate-window@^3.0.0":
+  version "3.568.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff"
+  integrity sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==
+  dependencies:
+    tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-browser@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.696.0.tgz#2034765c81313d5e50783662332d35ec041755a0"
+  integrity sha512-Z5rVNDdmPOe6ELoM5AhF/ja5tSjbe6ctSctDPb0JdDf4dT0v2MfwhJKzXju2RzX8Es/77Glh7MlaXLE0kCB9+Q==
+  dependencies:
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/types" "^3.7.1"
+    bowser "^2.11.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-browser@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.709.0.tgz#ad6e867bdd348923ec10ddd6c37740ce0986cd8f"
+  integrity sha512-/rL2GasJzdTWUURCQKFldw2wqBtY4k4kCiA2tVZSKg3y4Ey7zO34SW8ebaeCE2/xoWOyLR2/etdKyphoo4Zrtg==
+  dependencies:
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/types" "^3.7.2"
+    bowser "^2.11.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-node@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.696.0.tgz#3267119e2be02185f3b4e0beb0cc495d392260b4"
+  integrity sha512-KhKqcfyXIB0SCCt+qsu4eJjsfiOrNzK5dCV7RAW2YIpp+msxGUUX0NdRE9rkzjiv+3EMktgJm3eEIS+yxtlVdQ==
+  dependencies:
+    "@aws-sdk/middleware-user-agent" "3.696.0"
+    "@aws-sdk/types" "3.696.0"
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-node@3.712.0":
+  version "3.712.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.712.0.tgz#7634627775e0993eace70dea1dd915122f1a053f"
+  integrity sha512-26X21bZ4FWsVpqs33uOXiB60TOWQdVlr7T7XONDFL/XN7GEpUJkWuuIB4PTok6VOmh1viYcdxZQqekXPuzXexQ==
+  dependencies:
+    "@aws-sdk/middleware-user-agent" "3.709.0"
+    "@aws-sdk/types" "3.709.0"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@aws-sdk/xml-builder@3.696.0":
+  version "3.696.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.696.0.tgz#ff3e37ee23208f9986f20d326cc278c0ee341164"
+  integrity sha512-dn1mX+EeqivoLYnY7p2qLrir0waPnCgS/0YdRCAVU2x14FgfUYCH6Im3w3oi2dMwhxfKY5lYVB5NKvZu7uI9lQ==
+  dependencies:
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@aws-sdk/xml-builder@3.709.0":
+  version "3.709.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.709.0.tgz#5841faa1e78afcea064557a1a56709978b325758"
+  integrity sha512-2GPCwlNxeHspoK/Mc8nbk9cBOkSpp3j2SJUQmFnyQK6V/pR6II2oPRyZkMomug1Rc10hqlBHByMecq4zhV2uUw==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7"
+  integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==
+  dependencies:
+    "@babel/highlight" "^7.25.7"
+    picocolors "^1.0.0"
 
-"@babel/parser@^7.16.0", "@babel/parser@^7.16.3":
-  version "7.16.3"
-  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz#271bafcb811080905a119222edbc17909c82261d"
-  integrity sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==
-
-"@babel/template@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
-  integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==
-  dependencies:
-    "@babel/code-frame" "^7.16.0"
-    "@babel/parser" "^7.16.0"
-    "@babel/types" "^7.16.0"
-
-"@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3":
-  version "7.16.3"
-  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787"
-  integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==
-  dependencies:
-    "@babel/code-frame" "^7.16.0"
-    "@babel/generator" "^7.16.0"
-    "@babel/helper-function-name" "^7.16.0"
-    "@babel/helper-hoist-variables" "^7.16.0"
-    "@babel/helper-split-export-declaration" "^7.16.0"
-    "@babel/parser" "^7.16.3"
-    "@babel/types" "^7.16.0"
+"@babel/compat-data@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c"
+  integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==
+
+"@babel/core@^7.7.5":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece"
+  integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==
+  dependencies:
+    "@ampproject/remapping" "^2.2.0"
+    "@babel/code-frame" "^7.25.7"
+    "@babel/generator" "^7.25.7"
+    "@babel/helper-compilation-targets" "^7.25.7"
+    "@babel/helper-module-transforms" "^7.25.7"
+    "@babel/helpers" "^7.25.7"
+    "@babel/parser" "^7.25.7"
+    "@babel/template" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+    convert-source-map "^2.0.0"
     debug "^4.1.0"
+    gensync "^1.0.0-beta.2"
+    json5 "^2.2.3"
+    semver "^6.3.1"
+
+"@babel/generator@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56"
+  integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==
+  dependencies:
+    "@babel/types" "^7.25.7"
+    "@jridgewell/gen-mapping" "^0.3.5"
+    "@jridgewell/trace-mapping" "^0.3.25"
+    jsesc "^3.0.2"
+
+"@babel/helper-compilation-targets@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4"
+  integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==
+  dependencies:
+    "@babel/compat-data" "^7.25.7"
+    "@babel/helper-validator-option" "^7.25.7"
+    browserslist "^4.24.0"
+    lru-cache "^5.1.1"
+    semver "^6.3.1"
+
+"@babel/helper-module-imports@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472"
+  integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==
+  dependencies:
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-module-transforms@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a"
+  integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==
+  dependencies:
+    "@babel/helper-module-imports" "^7.25.7"
+    "@babel/helper-simple-access" "^7.25.7"
+    "@babel/helper-validator-identifier" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+
+"@babel/helper-simple-access@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0"
+  integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==
+  dependencies:
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-string-parser@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54"
+  integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==
+
+"@babel/helper-validator-identifier@^7.22.5", "@babel/helper-validator-identifier@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5"
+  integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==
+
+"@babel/helper-validator-option@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729"
+  integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==
+
+"@babel/helpers@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2"
+  integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==
+  dependencies:
+    "@babel/template" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/highlight@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5"
+  integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==
+  dependencies:
+    "@babel/helper-validator-identifier" "^7.25.7"
+    chalk "^2.4.2"
+    js-tokens "^4.0.0"
+    picocolors "^1.0.0"
+
+"@babel/parser@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.7.tgz#99b927720f4ddbfeb8cd195a363ed4532f87c590"
+  integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==
+  dependencies:
+    "@babel/types" "^7.25.7"
+
+"@babel/template@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769"
+  integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==
+  dependencies:
+    "@babel/code-frame" "^7.25.7"
+    "@babel/parser" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/traverse@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8"
+  integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==
+  dependencies:
+    "@babel/code-frame" "^7.25.7"
+    "@babel/generator" "^7.25.7"
+    "@babel/parser" "^7.25.7"
+    "@babel/template" "^7.25.7"
+    "@babel/types" "^7.25.7"
+    debug "^4.3.1"
     globals "^11.1.0"
 
-"@babel/types@^7.16.0":
-  version "7.16.0"
-  resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
-  integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
+"@babel/types@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b"
+  integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==
   dependencies:
-    "@babel/helper-validator-identifier" "^7.15.7"
+    "@babel/helper-string-parser" "^7.25.7"
+    "@babel/helper-validator-identifier" "^7.25.7"
     to-fast-properties "^2.0.0"
 
+"@commitlint/cli@^19.6.1":
+  version "19.6.1"
+  resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.6.1.tgz#24edd26595d911cc6b680cdfbb1fb083bfd5f73d"
+  integrity sha512-8hcyA6ZoHwWXC76BoC8qVOSr8xHy00LZhZpauiD0iO0VYbVhMnED0da85lTfIULxl7Lj4c6vZgF0Wu/ed1+jlQ==
+  dependencies:
+    "@commitlint/format" "^19.5.0"
+    "@commitlint/lint" "^19.6.0"
+    "@commitlint/load" "^19.6.1"
+    "@commitlint/read" "^19.5.0"
+    "@commitlint/types" "^19.5.0"
+    tinyexec "^0.3.0"
+    yargs "^17.0.0"
+
+"@commitlint/config-conventional@^19":
+  version "19.6.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-19.6.0.tgz#badba72c8639ea79291e2941001bd7ea7fad3a2c"
+  integrity sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==
+  dependencies:
+    "@commitlint/types" "^19.5.0"
+    conventional-changelog-conventionalcommits "^7.0.2"
+
+"@commitlint/config-validator@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-19.5.0.tgz#f0a4eda2109fc716ef01bb8831af9b02e3a1e568"
+  integrity sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==
+  dependencies:
+    "@commitlint/types" "^19.5.0"
+    ajv "^8.11.0"
+
+"@commitlint/ensure@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-19.5.0.tgz#b087374a6a0a0140e5925a82901d234885d9f6dd"
+  integrity sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==
+  dependencies:
+    "@commitlint/types" "^19.5.0"
+    lodash.camelcase "^4.3.0"
+    lodash.kebabcase "^4.1.1"
+    lodash.snakecase "^4.1.1"
+    lodash.startcase "^4.4.0"
+    lodash.upperfirst "^4.3.1"
+
+"@commitlint/execute-rule@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz#c13da8c03ea0379f30856111e27d57518e25b8a2"
+  integrity sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==
+
+"@commitlint/format@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-19.5.0.tgz#d879db2d97d70ae622397839fb8603d56e85a250"
+  integrity sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==
+  dependencies:
+    "@commitlint/types" "^19.5.0"
+    chalk "^5.3.0"
+
+"@commitlint/is-ignored@^19.6.0":
+  version "19.6.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-19.6.0.tgz#6adb9097d36b68e00b9c06a73d7a08e9f54c54dc"
+  integrity sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==
+  dependencies:
+    "@commitlint/types" "^19.5.0"
+    semver "^7.6.0"
+
+"@commitlint/lint@^19.6.0":
+  version "19.6.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-19.6.0.tgz#f9fc9b11b808c96bd3f85e882e056daabac40c36"
+  integrity sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==
+  dependencies:
+    "@commitlint/is-ignored" "^19.6.0"
+    "@commitlint/parse" "^19.5.0"
+    "@commitlint/rules" "^19.6.0"
+    "@commitlint/types" "^19.5.0"
+
+"@commitlint/load@^19.6.1":
+  version "19.6.1"
+  resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-19.6.1.tgz#5fae8843a6048a2d3d1cc16da0af8ee532fa9db4"
+  integrity sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==
+  dependencies:
+    "@commitlint/config-validator" "^19.5.0"
+    "@commitlint/execute-rule" "^19.5.0"
+    "@commitlint/resolve-extends" "^19.5.0"
+    "@commitlint/types" "^19.5.0"
+    chalk "^5.3.0"
+    cosmiconfig "^9.0.0"
+    cosmiconfig-typescript-loader "^6.1.0"
+    lodash.isplainobject "^4.0.6"
+    lodash.merge "^4.6.2"
+    lodash.uniq "^4.5.0"
+
+"@commitlint/message@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-19.5.0.tgz#c062d9a1d2b3302c3a8cac25d6d1125ea9c019b2"
+  integrity sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==
+
+"@commitlint/parse@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-19.5.0.tgz#b450dad9b5a95ac5ba472d6d0fdab822dce946fc"
+  integrity sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==
+  dependencies:
+    "@commitlint/types" "^19.5.0"
+    conventional-changelog-angular "^7.0.0"
+    conventional-commits-parser "^5.0.0"
+
+"@commitlint/read@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-19.5.0.tgz#601f9f1afe69852b0f28aa81cd455b40979fad6b"
+  integrity sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==
+  dependencies:
+    "@commitlint/top-level" "^19.5.0"
+    "@commitlint/types" "^19.5.0"
+    git-raw-commits "^4.0.0"
+    minimist "^1.2.8"
+    tinyexec "^0.3.0"
+
+"@commitlint/resolve-extends@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz#f3ec33e12d10df90cae0bfad8e593431fb61b18e"
+  integrity sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==
+  dependencies:
+    "@commitlint/config-validator" "^19.5.0"
+    "@commitlint/types" "^19.5.0"
+    global-directory "^4.0.1"
+    import-meta-resolve "^4.0.0"
+    lodash.mergewith "^4.6.2"
+    resolve-from "^5.0.0"
+
+"@commitlint/rules@^19.6.0":
+  version "19.6.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-19.6.0.tgz#2436da7974c3cf2a7236257f3ef5dd40c4d91312"
+  integrity sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==
+  dependencies:
+    "@commitlint/ensure" "^19.5.0"
+    "@commitlint/message" "^19.5.0"
+    "@commitlint/to-lines" "^19.5.0"
+    "@commitlint/types" "^19.5.0"
+
+"@commitlint/to-lines@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-19.5.0.tgz#e4b7f34f09064568c96a74de4f1fc9f466c4d472"
+  integrity sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==
+
+"@commitlint/top-level@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-19.5.0.tgz#0017ffe39b5ba3611a1debd62efe28803601a14f"
+  integrity sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==
+  dependencies:
+    find-up "^7.0.0"
+
+"@commitlint/types@^19.5.0":
+  version "19.5.0"
+  resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-19.5.0.tgz#c5084d1231d4dd50e40bdb656ee7601f691400b3"
+  integrity sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==
+  dependencies:
+    "@types/conventional-commits-parser" "^5.0.0"
+    chalk "^5.3.0"
+
 "@cspotcode/source-map-support@^0.8.0":
   version "0.8.1"
   resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
@@ -224,256 +1340,340 @@
   dependencies:
     "@jridgewell/trace-mapping" "0.3.9"
 
-"@eslint/eslintrc@^0.4.3":
-  version "0.4.3"
-  resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
-  integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+  integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+  dependencies:
+    eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
+  version "4.11.1"
+  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
+  integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
+
+"@eslint/eslintrc@^2.1.4":
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
+  integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
   dependencies:
     ajv "^6.12.4"
-    debug "^4.1.1"
-    espree "^7.3.0"
-    globals "^13.9.0"
-    ignore "^4.0.6"
+    debug "^4.3.2"
+    espree "^9.6.0"
+    globals "^13.19.0"
+    ignore "^5.2.0"
     import-fresh "^3.2.1"
-    js-yaml "^3.13.1"
-    minimatch "^3.0.4"
+    js-yaml "^4.1.0"
+    minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@gar/promisify@^1.0.1":
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
-  integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
+"@eslint/js@8.57.1":
+  version "8.57.1"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
+  integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
 
-"@heroku-cli/color@^1.1.14":
-  version "1.1.14"
-  resolved "https://registry.yarnpkg.com/@heroku-cli/color/-/color-1.1.14.tgz#035ac4e48e564fcab37c3dc4bd09dbe596f2ad68"
-  integrity sha512-2JYy//YE2YINTe21hpdVMBNc7aYFkgDeY9JUz/BCjFZmYLn0UjGaCc4BpTcMGXNJwuqoUenw2WGOFGHsJqlIDw==
+"@humanwhocodes/config-array@^0.13.0":
+  version "0.13.0"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748"
+  integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
   dependencies:
-    ansi-styles "^3.2.1"
-    chalk "^2.4.1"
-    strip-ansi "^5.0.0"
-    supports-color "^5.5.0"
-    tslib "^1.9.3"
-
-"@heroku-cli/command@^8.5.0":
-  version "8.5.0"
-  resolved "https://registry.yarnpkg.com/@heroku-cli/command/-/command-8.5.0.tgz#1a9d977c85d5581622699d9a819d6da24a037993"
-  integrity sha512-HtjnammJPaoYkcrhmQM5sJCUueJ80KbZHUo3SldAEXmy9hefk34mk524nKS7ZlrABEiBilv4XYHCkrWCoq94uQ==
-  dependencies:
-    "@heroku-cli/color" "^1.1.14"
-    "@oclif/errors" "^1.2.2"
-    cli-ux "^4.9.3"
-    debug "^4.1.1"
-    fs-extra "^7.0.1"
-    heroku-client "^3.1.0"
-    http-call "^5.2.4"
-    netrc-parser "^3.1.6"
-    open "^6.2.0"
-    uuid "^8.3.0"
-
-"@humanwhocodes/config-array@^0.5.0":
-  version "0.5.0"
-  resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
-  integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+    "@humanwhocodes/object-schema" "^2.0.3"
+    debug "^4.3.1"
+    minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+  integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^2.0.3":
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
+  integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
+
+"@inquirer/checkbox@^4.0.4":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-4.0.4.tgz#e7335f9c23f4100f789a8fceb26417c9a74a6dee"
+  integrity sha512-fYAKCAcGNMdfjL6hZTRUwkIByQ8EIZCXKrIQZH7XjADnN/xvRUhj8UdBbpC4zoUzvChhkSC/zRKaP/tDs3dZpg==
   dependencies:
-    "@humanwhocodes/object-schema" "^1.2.0"
-    debug "^4.1.1"
-    minimatch "^3.0.4"
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/figures" "^1.0.9"
+    "@inquirer/type" "^3.0.2"
+    ansi-escapes "^4.3.2"
+    yoctocolors-cjs "^2.1.2"
 
-"@humanwhocodes/object-schema@^1.2.0":
-  version "1.2.1"
-  resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
-  integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+"@inquirer/confirm@^3.1.22":
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.2.0.tgz#6af1284670ea7c7d95e3f1253684cfbd7228ad6a"
+  integrity sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==
+  dependencies:
+    "@inquirer/core" "^9.1.0"
+    "@inquirer/type" "^1.5.3"
 
-"@isaacs/string-locale-compare@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b"
-  integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==
+"@inquirer/confirm@^5.1.1":
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.1.tgz#18385064b8275eb79fdba505ce527801804eea04"
+  integrity sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==
+  dependencies:
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
 
-"@jridgewell/resolve-uri@^3.0.3":
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
-  integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+"@inquirer/core@^10.1.2":
+  version "10.1.2"
+  resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.2.tgz#a9c5b9ed814a636e99b5c0a8ca4f1626d99fd75d"
+  integrity sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==
+  dependencies:
+    "@inquirer/figures" "^1.0.9"
+    "@inquirer/type" "^3.0.2"
+    ansi-escapes "^4.3.2"
+    cli-width "^4.1.0"
+    mute-stream "^2.0.0"
+    signal-exit "^4.1.0"
+    strip-ansi "^6.0.1"
+    wrap-ansi "^6.2.0"
+    yoctocolors-cjs "^2.1.2"
+
+"@inquirer/core@^9.1.0":
+  version "9.2.1"
+  resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.2.1.tgz#677c49dee399c9063f31e0c93f0f37bddc67add1"
+  integrity sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==
+  dependencies:
+    "@inquirer/figures" "^1.0.6"
+    "@inquirer/type" "^2.0.0"
+    "@types/mute-stream" "^0.0.4"
+    "@types/node" "^22.5.5"
+    "@types/wrap-ansi" "^3.0.0"
+    ansi-escapes "^4.3.2"
+    cli-width "^4.1.0"
+    mute-stream "^1.0.0"
+    signal-exit "^4.1.0"
+    strip-ansi "^6.0.1"
+    wrap-ansi "^6.2.0"
+    yoctocolors-cjs "^2.1.2"
 
-"@jridgewell/sourcemap-codec@^1.4.10":
-  version "1.4.14"
-  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
-  integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+"@inquirer/editor@^4.2.1":
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-4.2.1.tgz#9887e95aa28a52eb20e9e08d85cb3698ef404601"
+  integrity sha512-xn9aDaiP6nFa432i68JCaL302FyL6y/6EG97nAtfIPnWZ+mWPgCMLGc4XZ2QQMsZtu9q3Jd5AzBPjXh10aX9kA==
+  dependencies:
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
+    external-editor "^3.1.0"
 
-"@jridgewell/trace-mapping@0.3.9":
-  version "0.3.9"
-  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
-  integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
+"@inquirer/expand@^4.0.4":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-4.0.4.tgz#e3b052835e48fd4ebcf71813b7eae8b03c729d1b"
+  integrity sha512-GYocr+BPyxKPxQ4UZyNMqZFSGKScSUc0Vk17II3J+0bDcgGsQm0KYQNooN1Q5iBfXsy3x/VWmHGh20QnzsaHwg==
   dependencies:
-    "@jridgewell/resolve-uri" "^3.0.3"
-    "@jridgewell/sourcemap-codec" "^1.4.10"
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
+    yoctocolors-cjs "^2.1.2"
 
-"@nodelib/fs.scandir@2.1.3":
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
-  integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
+"@inquirer/figures@^1.0.5", "@inquirer/figures@^1.0.6":
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.6.tgz#1a562f916da39888c56b65b78259d2261bd7d40b"
+  integrity sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==
+
+"@inquirer/figures@^1.0.9":
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.9.tgz#9d8128f8274cde4ca009ca8547337cab3f37a4a3"
+  integrity sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==
+
+"@inquirer/input@^2.2.4":
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-2.3.0.tgz#9b99022f53780fecc842908f3f319b52a5a16865"
+  integrity sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==
   dependencies:
-    "@nodelib/fs.stat" "2.0.3"
-    run-parallel "^1.1.9"
+    "@inquirer/core" "^9.1.0"
+    "@inquirer/type" "^1.5.3"
 
-"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
-  integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
+"@inquirer/input@^4.1.1":
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-4.1.1.tgz#aea2e463087c6aae57b9801e1ae5648f50d0d22e"
+  integrity sha512-nAXAHQndZcXB+7CyjIW3XuQZZHbQQ0q8LX6miY6bqAWwDzNa9JUioDBYrFmOUNIsuF08o1WT/m2gbBXvBhYVxg==
+  dependencies:
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
 
-"@nodelib/fs.walk@^1.2.3":
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
-  integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
+"@inquirer/number@^3.0.4":
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-3.0.4.tgz#090dcac6886d0cddc255f6624b61fb4461747fee"
+  integrity sha512-DX7a6IXRPU0j8kr2ovf+QaaDiIf+zEKaZVzCWdLOTk7XigqSXvoh4cul7x68xp54WTQrgSnW7P1WBJDbyY3GhA==
   dependencies:
-    "@nodelib/fs.scandir" "2.1.3"
-    fastq "^1.6.0"
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
 
-"@npmcli/arborist@^4.0.4":
-  version "4.2.0"
-  resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-4.2.0.tgz#722b114376645ed3c78e1cef62969eb7993df2a0"
-  integrity sha512-uQmPnwuhNHkN8IgCwda6wXklUf3BUfuuIUFuJMT224frUS5u2AuEAeCr2fiRVsz7AHcW3iSDai2j3WhVFlfbRQ==
-  dependencies:
-    "@isaacs/string-locale-compare" "^1.1.0"
-    "@npmcli/installed-package-contents" "^1.0.7"
-    "@npmcli/map-workspaces" "^2.0.0"
-    "@npmcli/metavuln-calculator" "^2.0.0"
-    "@npmcli/move-file" "^1.1.0"
-    "@npmcli/name-from-folder" "^1.0.1"
-    "@npmcli/node-gyp" "^1.0.3"
-    "@npmcli/package-json" "^1.0.1"
-    "@npmcli/run-script" "^2.0.0"
-    bin-links "^2.3.0"
-    cacache "^15.0.3"
-    common-ancestor-path "^1.0.1"
-    json-parse-even-better-errors "^2.3.1"
-    json-stringify-nice "^1.1.4"
-    mkdirp "^1.0.4"
-    mkdirp-infer-owner "^2.0.0"
-    npm-install-checks "^4.0.0"
-    npm-package-arg "^8.1.5"
-    npm-pick-manifest "^6.1.0"
-    npm-registry-fetch "^11.0.0"
-    pacote "^12.0.2"
-    parse-conflict-json "^2.0.1"
-    proc-log "^1.0.0"
-    promise-all-reject-late "^1.0.0"
-    promise-call-limit "^1.0.1"
-    read-package-json-fast "^2.0.2"
-    readdir-scoped-modules "^1.1.0"
-    rimraf "^3.0.2"
-    semver "^7.3.5"
-    ssri "^8.0.1"
-    treeverse "^1.0.4"
-    walk-up-path "^1.0.0"
+"@inquirer/password@^4.0.4":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-4.0.4.tgz#77891ae3ed5736607e6e942993ac40ca00411a2c"
+  integrity sha512-wiliQOWdjM8FnBmdIHtQV2Ca3S1+tMBUerhyjkRCv1g+4jSvEweGu9GCcvVEgKDhTBT15nrxvk5/bVrGUqSs1w==
+  dependencies:
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
+    ansi-escapes "^4.3.2"
 
-"@npmcli/fs@^1.0.0":
-  version "1.1.0"
-  resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951"
-  integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==
+"@inquirer/prompts@^7.2.0":
+  version "7.2.1"
+  resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-7.2.1.tgz#f00fbcf06998a07faebc10741efa289384529950"
+  integrity sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==
+  dependencies:
+    "@inquirer/checkbox" "^4.0.4"
+    "@inquirer/confirm" "^5.1.1"
+    "@inquirer/editor" "^4.2.1"
+    "@inquirer/expand" "^4.0.4"
+    "@inquirer/input" "^4.1.1"
+    "@inquirer/number" "^3.0.4"
+    "@inquirer/password" "^4.0.4"
+    "@inquirer/rawlist" "^4.0.4"
+    "@inquirer/search" "^3.0.4"
+    "@inquirer/select" "^4.0.4"
+
+"@inquirer/rawlist@^4.0.4":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-4.0.4.tgz#d10bbd6c529cd468d3d764c19de21334a01fa6d9"
+  integrity sha512-IsVN2EZdNHsmFdKWx9HaXb8T/s3FlR/U1QPt9dwbSyPtjFbMTlW9CRFvnn0bm/QIsrMRD2oMZqrQpSWPQVbXXg==
   dependencies:
-    "@gar/promisify" "^1.0.1"
-    semver "^7.3.5"
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/type" "^3.0.2"
+    yoctocolors-cjs "^2.1.2"
 
-"@npmcli/git@^2.1.0":
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6"
-  integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==
-  dependencies:
-    "@npmcli/promise-spawn" "^1.3.2"
-    lru-cache "^6.0.0"
-    mkdirp "^1.0.4"
-    npm-pick-manifest "^6.1.1"
-    promise-inflight "^1.0.1"
-    promise-retry "^2.0.1"
-    semver "^7.3.5"
-    which "^2.0.2"
+"@inquirer/search@^3.0.4":
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-3.0.4.tgz#fcf51a853536add37491920634a182ecc9f5524b"
+  integrity sha512-tSkJk2SDmC2MEdTIjknXWmCnmPr5owTs9/xjfa14ol1Oh95n6xW7SYn5fiPk4/vrJPys0ggSWiISdPze4LTa7A==
+  dependencies:
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/figures" "^1.0.9"
+    "@inquirer/type" "^3.0.2"
+    yoctocolors-cjs "^2.1.2"
 
-"@npmcli/installed-package-contents@^1.0.6", "@npmcli/installed-package-contents@^1.0.7":
-  version "1.0.7"
-  resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa"
-  integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==
+"@inquirer/select@^2.5.0":
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.5.0.tgz#345c6908ecfaeef3d84ddd2f9feb2f487c558efb"
+  integrity sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==
   dependencies:
-    npm-bundled "^1.1.1"
-    npm-normalize-package-bin "^1.0.1"
+    "@inquirer/core" "^9.1.0"
+    "@inquirer/figures" "^1.0.5"
+    "@inquirer/type" "^1.5.3"
+    ansi-escapes "^4.3.2"
+    yoctocolors-cjs "^2.1.2"
 
-"@npmcli/map-workspaces@^2.0.0":
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.0.tgz#e342efbbdd0dad1bba5d7723b674ca668bf8ac5a"
-  integrity sha512-QBJfpCY1NOAkkW3lFfru9VTdqvMB2TN0/vrevl5xBCv5Fi0XDVcA6rqqSau4Ysi4Iw3fBzyXV7hzyTBDfadf7g==
+"@inquirer/select@^4.0.4":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-4.0.4.tgz#026ada15754def1cd3fbc01efc56eae45ccc7de4"
+  integrity sha512-ZzYLuLoUzTIW9EJm++jBpRiTshGqS3Q1o5qOEQqgzaBlmdsjQr6pA4TUNkwu6OBYgM2mIRbCz6mUhFDfl/GF+w==
   dependencies:
-    "@npmcli/name-from-folder" "^1.0.1"
-    glob "^7.1.6"
-    minimatch "^3.0.4"
-    read-package-json-fast "^2.0.1"
+    "@inquirer/core" "^10.1.2"
+    "@inquirer/figures" "^1.0.9"
+    "@inquirer/type" "^3.0.2"
+    ansi-escapes "^4.3.2"
+    yoctocolors-cjs "^2.1.2"
 
-"@npmcli/metavuln-calculator@^2.0.0":
+"@inquirer/type@^1.5.3":
+  version "1.5.5"
+  resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.5.tgz#303ea04ce7ad2e585b921b662b3be36ef7b4f09b"
+  integrity sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==
+  dependencies:
+    mute-stream "^1.0.0"
+
+"@inquirer/type@^2.0.0":
   version "2.0.0"
-  resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz#70937b8b5a5cad5c588c8a7b38c4a8bd6f62c84c"
-  integrity sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg==
+  resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-2.0.0.tgz#08fa513dca2cb6264fe1b0a2fabade051444e3f6"
+  integrity sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==
   dependencies:
-    cacache "^15.0.5"
-    json-parse-even-better-errors "^2.3.1"
-    pacote "^12.0.0"
-    semver "^7.3.2"
+    mute-stream "^1.0.0"
 
-"@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0":
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
-  integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
+"@inquirer/type@^3.0.2":
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.2.tgz#baff9f8d70947181deb36772cd9a5b6876d3e60c"
+  integrity sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==
+
+"@istanbuljs/load-nyc-config@^1.0.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
+  integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
   dependencies:
-    mkdirp "^1.0.4"
-    rimraf "^3.0.2"
+    camelcase "^5.3.1"
+    find-up "^4.1.0"
+    get-package-type "^0.1.0"
+    js-yaml "^3.13.1"
+    resolve-from "^5.0.0"
 
-"@npmcli/name-from-folder@^1.0.1":
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a"
-  integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==
+"@istanbuljs/schema@^0.1.2":
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
+  integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
 
-"@npmcli/node-gyp@^1.0.2", "@npmcli/node-gyp@^1.0.3":
-  version "1.0.3"
-  resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33"
-  integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==
+"@jridgewell/gen-mapping@^0.3.5":
+  version "0.3.5"
+  resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
+  integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
+  dependencies:
+    "@jridgewell/set-array" "^1.2.1"
+    "@jridgewell/sourcemap-codec" "^1.4.10"
+    "@jridgewell/trace-mapping" "^0.3.24"
 
-"@npmcli/package-json@^1.0.1":
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89"
-  integrity sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==
+"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+  integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+  integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+  integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
+
+"@jridgewell/trace-mapping@0.3.9":
+  version "0.3.9"
+  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
+  integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
   dependencies:
-    json-parse-even-better-errors "^2.3.1"
+    "@jridgewell/resolve-uri" "^3.0.3"
+    "@jridgewell/sourcemap-codec" "^1.4.10"
 
-"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2":
-  version "1.3.2"
-  resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5"
-  integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+  version "0.3.25"
+  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+  integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
   dependencies:
-    infer-owner "^1.0.4"
+    "@jridgewell/resolve-uri" "^3.1.0"
+    "@jridgewell/sourcemap-codec" "^1.4.14"
 
-"@npmcli/run-script@^2.0.0":
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743"
-  integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==
+"@nodelib/fs.scandir@2.1.5":
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
   dependencies:
-    "@npmcli/node-gyp" "^1.0.2"
-    "@npmcli/promise-spawn" "^1.3.2"
-    node-gyp "^8.2.0"
-    read-package-json-fast "^2.0.1"
+    "@nodelib/fs.stat" "2.0.5"
+    run-parallel "^1.1.9"
 
-"@oclif/color@^0.1.2":
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/@oclif/color/-/color-0.1.2.tgz#28b07e2850d9ce814d0b587ce3403b7ad8f7d987"
-  integrity sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+  version "1.2.8"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
   dependencies:
-    ansi-styles "^3.2.1"
-    chalk "^3.0.0"
-    strip-ansi "^5.2.0"
-    supports-color "^5.4.0"
-    tslib "^1"
+    "@nodelib/fs.scandir" "2.1.5"
+    fastq "^1.6.0"
 
-"@oclif/color@^1.0.1":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@oclif/color/-/color-1.0.1.tgz#20ab9205e0924c6388918a88874e1f4b32df9970"
-  integrity sha512-qjYr+izgWdIVOroiBKqTzQgc1r5Wd9QB1J7yGM2EeelqhBARiiVLRZL45vhV4zdyTRdDkZS0EBzFwQap+nliLA==
+"@nolyfill/is-core-module@1.0.39":
+  version "1.0.39"
+  resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
+  integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
+
+"@oclif/color@^1.0.13":
+  version "1.0.13"
+  resolved "https://registry.yarnpkg.com/@oclif/color/-/color-1.0.13.tgz#91a5c9c271f686bb72ce013e67fa363ddaab2f43"
+  integrity sha512-/2WZxKCNjeHlQogCs1VBtJWlPXjwWke/9gMrwsVsrUt00g2V6LUBvwgwrxhrXepjOmq4IZ5QeNbpDMEOUlx/JA==
   dependencies:
     ansi-styles "^4.2.1"
     chalk "^4.1.0"
@@ -481,666 +1681,1032 @@
     supports-color "^8.1.1"
     tslib "^2"
 
-"@oclif/command@1.8.15":
-  version "1.8.15"
-  resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.15.tgz#0639e5c60e36deba88dd852de4dca231fb29138a"
-  integrity sha512-lMRsr38sm4XBDBt2u88nvGyk3YxMjQenfX1HM140ZckTVqwuvFVZLP4HZ0rSAK9FdJzfryO/tH5hovdiC6bgsw==
+"@oclif/core@^3.27.0":
+  version "3.27.0"
+  resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.27.0.tgz#a22a4ff4e5811db7a182b1687302237a57802381"
+  integrity sha512-Fg93aNFvXzBq5L7ztVHFP2nYwWU1oTCq48G0TjF/qC1UN36KWa2H5Hsm72kERd5x/sjy2M2Tn4kDEorUlpXOlw==
   dependencies:
-    "@oclif/config" "^1.18.2"
-    "@oclif/errors" "^1.3.5"
-    "@oclif/help" "^1.0.1"
-    "@oclif/parser" "^3.8.6"
-    debug "^4.1.1"
-    semver "^7.3.2"
-
-"@oclif/config@1.18.2", "@oclif/config@^1.18.2":
-  version "1.18.2"
-  resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe"
-  integrity sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA==
-  dependencies:
-    "@oclif/errors" "^1.3.3"
-    "@oclif/parser" "^3.8.0"
-    debug "^4.1.1"
-    globby "^11.0.1"
-    is-wsl "^2.1.1"
-    tslib "^2.0.0"
-
-"@oclif/core@^1.20.0", "@oclif/core@^1.20.4":
-  version "1.20.4"
-  resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.20.4.tgz#7378b52e1f1b502e383ffb07f95dffc9fd8588ff"
-  integrity sha512-giug32M4YhSYNYKQwE1L57/+k5gp1+Bq3/0vKNQmzAY1tizFGhvBJc6GIRZasHjU+xtZLutQvrVrJo7chX3hxg==
-  dependencies:
-    "@oclif/linewrap" "^1.0.0"
-    "@oclif/screen" "^3.0.3"
+    "@types/cli-progress" "^3.11.5"
     ansi-escapes "^4.3.2"
     ansi-styles "^4.3.0"
     cardinal "^2.1.1"
     chalk "^4.1.2"
     clean-stack "^3.0.1"
-    cli-progress "^3.10.0"
-    debug "^4.3.4"
-    ejs "^3.1.6"
-    fs-extra "^9.1.0"
+    cli-progress "^3.12.0"
+    color "^4.2.3"
+    debug "^4.3.5"
+    ejs "^3.1.10"
     get-package-type "^0.1.0"
     globby "^11.1.0"
     hyperlinker "^1.0.0"
     indent-string "^4.0.0"
     is-wsl "^2.2.0"
     js-yaml "^3.14.1"
+    minimatch "^9.0.4"
     natural-orderby "^2.0.3"
     object-treeify "^1.1.33"
-    password-prompt "^1.1.2"
-    semver "^7.3.7"
+    password-prompt "^1.1.3"
+    slice-ansi "^4.0.0"
     string-width "^4.2.3"
     strip-ansi "^6.0.1"
     supports-color "^8.1.1"
     supports-hyperlinks "^2.2.0"
-    tslib "^2.4.1"
     widest-line "^3.1.0"
+    wordwrap "^1.0.0"
     wrap-ansi "^7.0.0"
 
-"@oclif/core@^2.0.2-beta.6", "@oclif/core@^2.8.0":
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.8.0.tgz#4948de3168804169fa68895af8ec4853f332b307"
-  integrity sha512-A2wHItFrD/WOw5bJ6Mtv9MD7If0bsKNR0pwEY0me+fo4HSXlJOtgYGqmzb8t8akX3DUUT7XsjPajsoHLkIJyvg==
+"@oclif/core@^4", "@oclif/core@^4.2.0":
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.2.0.tgz#ab78b247dfd66322d9c9376ebaf3764e3c82fefe"
+  integrity sha512-ETM2N/GL7W37Kv1Afv1j1Gh77CynS2ubEPP+p+MnjUXEjghNe7+bKAWhPkHnBuFAVFAqdv0qMpUAjxKLbsmbJw==
   dependencies:
-    "@types/cli-progress" "^3.11.0"
     ansi-escapes "^4.3.2"
-    ansi-styles "^4.3.0"
-    cardinal "^2.1.1"
-    chalk "^4.1.2"
+    ansis "^3.3.2"
     clean-stack "^3.0.1"
-    cli-progress "^3.12.0"
-    debug "^4.3.4"
-    ejs "^3.1.8"
-    fs-extra "^9.1.0"
+    cli-spinners "^2.9.2"
+    debug "^4.4.0"
+    ejs "^3.1.10"
     get-package-type "^0.1.0"
     globby "^11.1.0"
-    hyperlinker "^1.0.0"
     indent-string "^4.0.0"
     is-wsl "^2.2.0"
-    js-yaml "^3.14.1"
-    natural-orderby "^2.0.3"
-    object-treeify "^1.1.33"
-    password-prompt "^1.1.2"
-    semver "^7.3.7"
+    lilconfig "^3.1.3"
+    minimatch "^9.0.5"
+    semver "^7.6.3"
     string-width "^4.2.3"
-    strip-ansi "^6.0.1"
-    supports-color "^8.1.1"
-    supports-hyperlinks "^2.2.0"
-    ts-node "^10.9.1"
-    tslib "^2.5.0"
+    supports-color "^8"
     widest-line "^3.1.0"
     wordwrap "^1.0.0"
     wrap-ansi "^7.0.0"
 
-"@oclif/errors@1.3.5", "@oclif/errors@^1.2.2", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5":
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c"
-  integrity sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==
+"@oclif/plugin-help@^6.2.17":
+  version "6.2.17"
+  resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-6.2.17.tgz#e2a063cdde2c5c08fa6838abbe05652719508e52"
+  integrity sha512-+Z+xC11h+f4SHX1pW5lhoCT+aC0bQABfnRsIs/02gf7dZ1XSfi1I17ZMrrzYCcUNcDJA33guKUQeUK740hXPlw==
   dependencies:
-    clean-stack "^3.0.0"
-    fs-extra "^8.1"
-    indent-string "^4.0.0"
-    strip-ansi "^6.0.0"
-    wrap-ansi "^7.0.0"
+    "@oclif/core" "^4"
 
-"@oclif/help@^1.0.1":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.1.tgz#fd96a3dd9fb2314479e6c8584c91b63754a7dff5"
-  integrity sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw==
+"@oclif/plugin-legacy@^2.0.19":
+  version "2.0.19"
+  resolved "https://registry.yarnpkg.com/@oclif/plugin-legacy/-/plugin-legacy-2.0.19.tgz#73351a64573247d44a0943bc37731a5f1b1fb550"
+  integrity sha512-xgOGqJvrcIbw7oGCLLCaLnXGqnD6AqtO53UAEDC+yeUfWDua/Wxwg8ZkPH+Xda+4JVFrDJVe1s8Yvqjl6HEwVg==
   dependencies:
-    "@oclif/config" "1.18.2"
-    "@oclif/errors" "1.3.5"
-    chalk "^4.1.2"
-    indent-string "^4.0.0"
+    "@oclif/color" "^1.0.13"
+    "@oclif/core" "^3.27.0"
+    ansi-escapes "^4.3.2"
+    debug "^4.4.0"
+    semver "^7.6.3"
+
+"@oclif/plugin-not-found@^3.2.31":
+  version "3.2.31"
+  resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.31.tgz#a8147ff0138523ab7e86eb098006a6831d6093f1"
+  integrity sha512-EF3GmrenxqPLVCU75xLWbwohH1ot/yg+31vyPa4qJAkFspnmQ/Jv28afyk6q4ePcTA5lRC9PYqla5QsALngt3A==
+  dependencies:
+    "@inquirer/prompts" "^7.2.0"
+    "@oclif/core" "^4"
+    ansis "^3.3.1"
+    fast-levenshtein "^3.0.0"
+
+"@oclif/plugin-warn-if-update-available@^3.1.28":
+  version "3.1.28"
+  resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.28.tgz#61fc80da9ea819606711962d74686978f7c6039b"
+  integrity sha512-15UI0yrzsodQLltntbUOmR7Nyd1tmUWzbcnR7QJvWMgEMuImNjqNdSaeXUFc3UBtaK266YatJYJWL5SCb/MTWw==
+  dependencies:
+    "@oclif/core" "^4"
+    ansis "^3.4.0"
+    debug "^4.4.0"
+    http-call "^5.2.2"
     lodash "^4.17.21"
-    string-width "^4.2.0"
-    strip-ansi "^6.0.0"
-    widest-line "^3.1.0"
-    wrap-ansi "^6.2.0"
+    registry-auth-token "^5.0.3"
 
-"@oclif/linewrap@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91"
-  integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==
+"@oclif/prettier-config@^0.2.1":
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/@oclif/prettier-config/-/prettier-config-0.2.1.tgz#1def9f38134f9bfb229257f48a35f7d0d183dc78"
+  integrity sha512-XB8kwQj8zynXjIIWRm+6gO/r8Qft2xKtwBMSmq1JRqtA6TpwpqECqiu8LosBCyg2JBXuUy2lU23/L98KIR7FrQ==
 
-"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.6":
-  version "3.8.6"
-  resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.6.tgz#d5a108af9c708a051cc6b1d27d47359d75f41236"
-  integrity sha512-tXb0NKgSgNxmf6baN6naK+CCwOueaFk93FG9u202U7mTBHUKsioOUlw1SG/iPi9aJM3WE4pHLXmty59pci0OEw==
+"@oclif/test@^4":
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/@oclif/test/-/test-4.1.2.tgz#4243dfcedfc4f55edb6011263f334941683bf594"
+  integrity sha512-N8eibgRnH/5TTExC/RxjpLuVbyAy0bGXKHdJxD75tLxH01Ygds90gnSDtkNm14z6kPH90ac+A+LwY1IFZmg1bg==
   dependencies:
-    "@oclif/errors" "^1.2.2"
-    "@oclif/linewrap" "^1.0.0"
-    chalk "^4.1.0"
-    tslib "^2.0.0"
+    ansis "^3.3.2"
+    debug "^4.3.6"
 
-"@oclif/plugin-help@^5.1.19":
-  version "5.1.19"
-  resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.1.19.tgz#43051772fefafe9bfe8823e2298103feb351b9c7"
-  integrity sha512-eQVRCFJOwRj8Tbqz8Lzd9GN38egwLCg+ohJ0xfg12CoXml03WqkfcFiAWkVwSWmLVrZUlUVrxfXKKkmpUaXZHg==
+"@pnpm/config.env-replace@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c"
+  integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==
+
+"@pnpm/network.ca-file@^1.0.1":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983"
+  integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==
   dependencies:
-    "@oclif/core" "^1.20.4"
+    graceful-fs "4.2.10"
 
-"@oclif/plugin-legacy@^1.2.7":
-  version "1.2.7"
-  resolved "https://registry.yarnpkg.com/@oclif/plugin-legacy/-/plugin-legacy-1.2.7.tgz#acb53c97244660ce0610f51c0bb21b5c66cad6d4"
-  integrity sha512-Ymq9wrkJTufUCGX9sC+nAdnIa9Msy9AzQPwsCf6HTN26OGf3l+PSi4iMsXPL5zft6ZO/X9U1hPNmPtEJ94kJ+Q==
+"@pnpm/npm-conf@^2.1.0":
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0"
+  integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==
   dependencies:
-    "@heroku-cli/command" "^8.5.0"
-    "@oclif/color" "^0.1.2"
-    "@oclif/command" "1.8.15"
-    ansi-escapes "^4.3.2"
-    debug "^4.3.3"
-    semver "^7.3.5"
-    tslib "^2.0.0"
+    "@pnpm/config.env-replace" "^1.1.0"
+    "@pnpm/network.ca-file" "^1.0.1"
+    config-chain "^1.1.11"
 
-"@oclif/plugin-not-found@^2.3.7":
-  version "2.3.7"
-  resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-2.3.7.tgz#6ad13887985db02000bffaa045f40618e39e95dd"
-  integrity sha512-Aid1H9eJ4nWmr7MfstGRhNo8n+69jzGnoazU6zQDdDBdD/uXITbbpUHAqFiNz0W6FmzUtsq8aS69PY42RbQBZA==
+"@rtsao/scc@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
+  integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
+
+"@sindresorhus/is@^5.2.0":
+  version "5.6.0"
+  resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668"
+  integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==
+
+"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd"
+  integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==
   dependencies:
-    "@oclif/color" "^1.0.1"
-    "@oclif/core" "^1.20.0"
-    fast-levenshtein "^3.0.0"
-    lodash "^4.17.21"
+    type-detect "4.0.8"
 
-"@oclif/plugin-warn-if-update-available@^2.0.14":
-  version "2.0.14"
-  resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.0.14.tgz#f9142095f13c5e8300705533165ae039daa0c5f8"
-  integrity sha512-gEgFZuNtFx3yPfSuxhAm9F8nLZ4+UnBJhbjTywY0Cvrqvd+OvKvo6PfwRm0lWmH4EgWwQEq39pfaks1fg+y1gw==
+"@sinonjs/fake-timers@11.2.2":
+  version "11.2.2"
+  resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699"
+  integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==
   dependencies:
-    "@oclif/core" "^1.20.4"
-    chalk "^4.1.0"
-    debug "^4.1.0"
-    fs-extra "^9.0.1"
-    http-call "^5.2.2"
-    lodash "^4.17.21"
-    semver "^7.3.8"
+    "@sinonjs/commons" "^3.0.0"
 
-"@oclif/screen@^1.0.3":
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493"
-  integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==
+"@sinonjs/fake-timers@^13.0.1":
+  version "13.0.2"
+  resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.2.tgz#3ffe88abb062067a580fdfba706ad00435a0f2a6"
+  integrity sha512-4Bb+oqXZTSTZ1q27Izly9lv8B9dlV61CROxPiVtywwzv5SnytJqhvYe6FclHYuXml4cd1VHPo1zd5PmTeJozvA==
+  dependencies:
+    "@sinonjs/commons" "^3.0.1"
 
-"@oclif/screen@^3.0.3":
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.3.tgz#e679ad10535e31d333f809f7a71335cc9aef1e55"
-  integrity sha512-KX8gMYA9ujBPOd1HFsV9e0iEx7Uoj8AG/3YsW4TtWQTg4lJvr82qNm7o/cFQfYRIt+jw7Ew/4oL4A22zOT+IRA==
+"@sinonjs/samsam@^8.0.0":
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689"
+  integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==
+  dependencies:
+    "@sinonjs/commons" "^3.0.1"
+    lodash.get "^4.4.2"
+    type-detect "^4.1.0"
 
-"@oclif/test@^2.3.0":
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/@oclif/test/-/test-2.3.0.tgz#c62efef4e4fa2ec3d44a3a79b58cc9e43898413b"
-  integrity sha512-DgoEOY/Y1FvNwA1J0Sy7u6jZSHbDutw6kNOWqVizlf1wSJiHKV6Ia9DyhHsg2Nb4EZ+1AKcetC0fI7ixLxxJHw==
+"@sinonjs/text-encoding@^0.7.3":
+  version "0.7.3"
+  resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f"
+  integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==
+
+"@smithy/abort-controller@^3.1.9":
+  version "3.1.9"
+  resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.9.tgz#47d323f754136a489e972d7fd465d534d72fcbff"
+  integrity sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==
   dependencies:
-    "@oclif/core" "^2.0.2-beta.6"
-    fancy-test "^2.0.11"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@octokit/auth-token@^2.4.4":
-  version "2.5.0"
-  resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36"
-  integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==
-  dependencies:
-    "@octokit/types" "^6.0.3"
-
-"@octokit/core@^3.5.1":
-  version "3.5.1"
-  resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b"
-  integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==
-  dependencies:
-    "@octokit/auth-token" "^2.4.4"
-    "@octokit/graphql" "^4.5.8"
-    "@octokit/request" "^5.6.0"
-    "@octokit/request-error" "^2.0.5"
-    "@octokit/types" "^6.0.3"
-    before-after-hook "^2.2.0"
-    universal-user-agent "^6.0.0"
-
-"@octokit/endpoint@^6.0.1":
-  version "6.0.12"
-  resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658"
-  integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==
-  dependencies:
-    "@octokit/types" "^6.0.3"
-    is-plain-object "^5.0.0"
-    universal-user-agent "^6.0.0"
-
-"@octokit/graphql@^4.5.8":
-  version "4.8.0"
-  resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3"
-  integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==
-  dependencies:
-    "@octokit/request" "^5.6.0"
-    "@octokit/types" "^6.0.3"
-    universal-user-agent "^6.0.0"
-
-"@octokit/openapi-types@^11.2.0":
-  version "11.2.0"
-  resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6"
-  integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==
-
-"@octokit/plugin-paginate-rest@^2.16.8":
-  version "2.17.0"
-  resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7"
-  integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==
-  dependencies:
-    "@octokit/types" "^6.34.0"
-
-"@octokit/plugin-request-log@^1.0.4":
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
-  integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
+"@smithy/chunked-blob-reader-native@^3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz#39045ed278ee1b6f4c12715c7565678557274c29"
+  integrity sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==
+  dependencies:
+    "@smithy/util-base64" "^3.0.0"
+    tslib "^2.6.2"
 
-"@octokit/plugin-rest-endpoint-methods@^5.12.0":
-  version "5.13.0"
-  resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba"
-  integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==
+"@smithy/chunked-blob-reader@^4.0.0":
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz#754099909957fb1986c16eb88afad75919d7129d"
+  integrity sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/config-resolver@^3.0.12", "@smithy/config-resolver@^3.0.13":
+  version "3.0.13"
+  resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.13.tgz#653643a77a33d0f5907a5e7582353886b07ba752"
+  integrity sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-config-provider" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.11"
+    tslib "^2.6.2"
+
+"@smithy/core@^2.5.3", "@smithy/core@^2.5.5":
+  version "2.5.5"
+  resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.5.5.tgz#c75b15caee9e58c800db3e6b99e9e373532d394a"
+  integrity sha512-G8G/sDDhXA7o0bOvkc7bgai6POuSld/+XhNnWAbpQTpLv2OZPvyqQ58tLPPlz0bSNsXktldDDREIv1LczFeNEw==
+  dependencies:
+    "@smithy/middleware-serde" "^3.0.11"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-body-length-browser" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-stream" "^3.3.2"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/credential-provider-imds@^3.2.6":
+  version "3.2.7"
+  resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.7.tgz#6eedf87ba0238723ec46d8ce0f18e276685a702d"
+  integrity sha512-cEfbau+rrWF8ylkmmVAObOmjbTIzKyUC5TkBL58SbLywD0RCBC4JAUKbmtSm2w5KUJNRPGgpGFMvE2FKnuNlWQ==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.11"
+    "@smithy/property-provider" "^3.1.10"
+    "@smithy/types" "^3.7.1"
+    "@smithy/url-parser" "^3.0.10"
+    tslib "^2.6.2"
+
+"@smithy/credential-provider-imds@^3.2.8":
+  version "3.2.8"
+  resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz#27ed2747074c86a7d627a98e56f324a65cba88de"
+  integrity sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/types" "^3.7.2"
+    "@smithy/url-parser" "^3.0.11"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-codec@^3.1.10":
+  version "3.1.10"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz#0c1a3457e7a23b71cd71525ceb668f8569a84dad"
+  integrity sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==
+  dependencies:
+    "@aws-crypto/crc32" "5.2.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-hex-encoding" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-serde-browser@^3.0.14":
+  version "3.0.14"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz#0c3584c7cde2e210aacdfbbd2b57c1d7e2ca3b95"
+  integrity sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==
+  dependencies:
+    "@smithy/eventstream-serde-universal" "^3.0.13"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-serde-config-resolver@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz#5edceba836debea165ea93145231036f6286d67c"
+  integrity sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==
   dependencies:
-    "@octokit/types" "^6.34.0"
-    deprecation "^2.3.1"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0":
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677"
-  integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
-  dependencies:
-    "@octokit/types" "^6.0.3"
-    deprecation "^2.0.0"
-    once "^1.4.0"
-
-"@octokit/request@^5.6.0":
-  version "5.6.2"
-  resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz#1aa74d5da7b9e04ac60ef232edd9a7438dcf32d8"
-  integrity sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==
-  dependencies:
-    "@octokit/endpoint" "^6.0.1"
-    "@octokit/request-error" "^2.1.0"
-    "@octokit/types" "^6.16.1"
-    is-plain-object "^5.0.0"
-    node-fetch "^2.6.1"
-    universal-user-agent "^6.0.0"
-
-"@octokit/rest@^18.0.6":
-  version "18.12.0"
-  resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881"
-  integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==
-  dependencies:
-    "@octokit/core" "^3.5.1"
-    "@octokit/plugin-paginate-rest" "^2.16.8"
-    "@octokit/plugin-request-log" "^1.0.4"
-    "@octokit/plugin-rest-endpoint-methods" "^5.12.0"
-
-"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0":
-  version "6.34.0"
-  resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218"
-  integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==
-  dependencies:
-    "@octokit/openapi-types" "^11.2.0"
-
-"@sindresorhus/is@^4.0.0":
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
-  integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
-
-"@szmarczak/http-timer@^4.0.5":
-  version "4.0.6"
-  resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
-  integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
+"@smithy/eventstream-serde-node@^3.0.13":
+  version "3.0.13"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz#5aebd7b553becee277e411a2b69f6af8c9d7b3a6"
+  integrity sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==
   dependencies:
-    defer-to-connect "^2.0.0"
+    "@smithy/eventstream-serde-universal" "^3.0.13"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@tootallnate/once@1":
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
-  integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+"@smithy/eventstream-serde-universal@^3.0.13":
+  version "3.0.13"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz#609c922ea14a0a3eed23a28ac110344c935704eb"
+  integrity sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==
+  dependencies:
+    "@smithy/eventstream-codec" "^3.1.10"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@tsconfig/node10@^1.0.7":
-  version "1.0.8"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9"
-  integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==
+"@smithy/fetch-http-handler@^4.1.1", "@smithy/fetch-http-handler@^4.1.2":
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.2.tgz#f034ff16416b37d92908a1381ef5fddbf4ef1879"
+  integrity sha512-R7rU7Ae3ItU4rC0c5mB2sP5mJNbCfoDc8I5XlYjIZnquyUwec7fEo78F6DA3SmgJgkU1qTMcZJuGblxZsl10ZA==
+  dependencies:
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/querystring-builder" "^3.0.11"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-base64" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/hash-blob-browser@^3.1.10":
+  version "3.1.10"
+  resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.10.tgz#985e308189c2687a15004152b97506882ffb2b13"
+  integrity sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA==
+  dependencies:
+    "@smithy/chunked-blob-reader" "^4.0.0"
+    "@smithy/chunked-blob-reader-native" "^3.0.1"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/hash-node@^3.0.10", "@smithy/hash-node@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.11.tgz#99e09ead3fc99c8cd7ca0f254ea0e35714f2a0d3"
+  integrity sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-buffer-from" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
 
-"@tsconfig/node12@^1.0.7":
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c"
-  integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==
+"@smithy/hash-stream-node@^3.1.10":
+  version "3.1.10"
+  resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.10.tgz#94716b4556f4ccf2807e605f47bb5b018ed7dfb0"
+  integrity sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
 
-"@tsconfig/node14@^1.0.0":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2"
-  integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==
+"@smithy/invalid-dependency@^3.0.10", "@smithy/invalid-dependency@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz#8144d7b0af9d34ab5f672e1f674f97f8740bb9ae"
+  integrity sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@tsconfig/node16@^1.0.2":
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e"
-  integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
+"@smithy/is-array-buffer@^2.2.0":
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111"
+  integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==
+  dependencies:
+    tslib "^2.6.2"
 
-"@types/cacheable-request@^6.0.1":
-  version "6.0.3"
-  resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
-  integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
+"@smithy/is-array-buffer@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a"
+  integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==
   dependencies:
-    "@types/http-cache-semantics" "*"
-    "@types/keyv" "^3.1.4"
-    "@types/node" "*"
-    "@types/responselike" "^1.0.0"
+    tslib "^2.6.2"
 
-"@types/chai@*", "@types/chai@^4.3.4":
-  version "4.3.4"
-  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4"
-  integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==
+"@smithy/md5-js@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.11.tgz#27e4dab616348ff94aed24dc75e4017c582df40f"
+  integrity sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/middleware-content-length@^3.0.12", "@smithy/middleware-content-length@^3.0.13":
+  version "3.0.13"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz#6e08fe52739ac8fb3996088e0f8837e4b2ea187f"
+  integrity sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==
+  dependencies:
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/middleware-endpoint@^3.2.3", "@smithy/middleware-endpoint@^3.2.5":
+  version "3.2.5"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.5.tgz#bdcfdf1f342cf933b0b8a709996f9a8fbb8148f4"
+  integrity sha512-VhJNs/s/lyx4weiZdXSloBgoLoS8osV0dKIain8nGmx7of3QFKu5BSdEuk1z/U8x9iwes1i+XCiNusEvuK1ijg==
+  dependencies:
+    "@smithy/core" "^2.5.5"
+    "@smithy/middleware-serde" "^3.0.11"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    "@smithy/url-parser" "^3.0.11"
+    "@smithy/util-middleware" "^3.0.11"
+    tslib "^2.6.2"
+
+"@smithy/middleware-retry@^3.0.27", "@smithy/middleware-retry@^3.0.30":
+  version "3.0.30"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.30.tgz#2580322d0d28ad782b5b8c07c150b14efdc3b2f9"
+  integrity sha512-6323RL2BvAR3VQpTjHpa52kH/iSHyxd/G9ohb2MkBk2Ucu+oMtRXT8yi7KTSIS9nb58aupG6nO0OlXnQOAcvmQ==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/service-error-classification" "^3.0.11"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-retry" "^3.0.11"
+    tslib "^2.6.2"
+    uuid "^9.0.1"
+
+"@smithy/middleware-serde@^3.0.10", "@smithy/middleware-serde@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz#c7d54e0add4f83e05c6878a011fc664e21022f12"
+  integrity sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@types/cli-progress@^3.11.0":
-  version "3.11.0"
-  resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.0.tgz#ec79df99b26757c3d1c7170af8422e0fc95eef7e"
-  integrity sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg==
+"@smithy/middleware-stack@^3.0.10", "@smithy/middleware-stack@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz#453af2096924e4064d9da4e053cfdf65d9a36acc"
+  integrity sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/node-config-provider@^3.1.11", "@smithy/node-config-provider@^3.1.12":
+  version "3.1.12"
+  resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz#1b1d674fc83f943dc7b3017e37f16f374e878a6c"
+  integrity sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==
+  dependencies:
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/shared-ini-file-loader" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/node-http-handler@^3.3.1", "@smithy/node-http-handler@^3.3.2":
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.3.2.tgz#b34685863b74dabdaf7860aa81b42d0d5437c7e0"
+  integrity sha512-t4ng1DAd527vlxvOfKFYEe6/QFBcsj7WpNlWTyjorwXXcKw3XlltBGbyHfSJ24QT84nF+agDha9tNYpzmSRZPA==
+  dependencies:
+    "@smithy/abort-controller" "^3.1.9"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/querystring-builder" "^3.0.11"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/property-provider@^3.1.10", "@smithy/property-provider@^3.1.9":
+  version "3.1.10"
+  resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.10.tgz#ae00447c1060c194c3e1b9475f7c8548a70f8486"
+  integrity sha512-n1MJZGTorTH2DvyTVj+3wXnd4CzjJxyXeOgnTlgNVFxaaMeT4OteEp4QrzF8p9ee2yg42nvyVK6R/awLCakjeQ==
+  dependencies:
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
+
+"@smithy/property-provider@^3.1.11":
+  version "3.1.11"
+  resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.11.tgz#161cf1c2a2ada361e417382c57f5ba6fbca8acad"
+  integrity sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/protocol-http@^4.1.7", "@smithy/protocol-http@^4.1.8":
+  version "4.1.8"
+  resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.8.tgz#0461758671335f65e8ff3fc0885ab7ed253819c9"
+  integrity sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/querystring-builder@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz#2ed04adbe725671824c5613d0d6f9376d791a909"
+  integrity sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==
   dependencies:
-    "@types/node" "*"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-uri-escape" "^3.0.0"
+    tslib "^2.6.2"
 
-"@types/debug@*":
-  version "4.1.5"
-  resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
-  integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
+"@smithy/querystring-parser@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz#9d3177ea19ce8462f18d9712b395239e1ca1f969"
+  integrity sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
 
-"@types/diff@*":
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/@types/diff/-/diff-4.0.2.tgz#2e9bb89f9acc3ab0108f0f3dc4dbdcf2fff8a99c"
-  integrity sha512-mIenTfsIe586/yzsyfql69KRnA75S8SVXQbTLpDejRrjH0QSJcpu3AUOi/Vjnt9IOsXKxPhJfGpQUNMueIU1fQ==
+"@smithy/service-error-classification@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz#d3d7fc0aacd2e60d022507367e55c7939e5bcb8a"
+  integrity sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==
+  dependencies:
+    "@smithy/types" "^3.7.2"
 
-"@types/ejs@*":
-  version "3.0.5"
-  resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.0.5.tgz#95a3a1c3d9603eba80fe67ff56da1ba275ef2eda"
-  integrity sha512-k4ef69sS4sIqAPW9GoBnN+URAON2LeL1H0duQvL4RgdEBna19/WattYSA1qYqvbVEDRTSWzOw56tCLhC/m/IOw==
+"@smithy/shared-ini-file-loader@^3.1.10":
+  version "3.1.11"
+  resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.11.tgz#0b4f98c4a66480956fbbefc4627c5dc09d891aea"
+  integrity sha512-AUdrIZHFtUgmfSN4Gq9nHu3IkHMa1YDcN+s061Nfm+6pQ0mJy85YQDB0tZBCmls0Vuj22pLwDPmL92+Hvfwwlg==
+  dependencies:
+    "@smithy/types" "^3.7.1"
+    tslib "^2.6.2"
 
-"@types/events@*":
+"@smithy/shared-ini-file-loader@^3.1.12":
+  version "3.1.12"
+  resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz#d98b1b663eb18935ce2cbc79024631d34f54042a"
+  integrity sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/signature-v4@^4.2.2":
+  version "4.2.3"
+  resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.3.tgz#abbca5e5fe9158422b3125b2956791a325a27f22"
+  integrity sha512-pPSQQ2v2vu9vc8iew7sszLd0O09I5TRc5zhY71KA+Ao0xYazIG+uLeHbTJfIWGO3BGVLiXjUr3EEeCcEQLjpWQ==
+  dependencies:
+    "@smithy/is-array-buffer" "^3.0.0"
+    "@smithy/protocol-http" "^4.1.7"
+    "@smithy/types" "^3.7.1"
+    "@smithy/util-hex-encoding" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.10"
+    "@smithy/util-uri-escape" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/signature-v4@^4.2.4":
+  version "4.2.4"
+  resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.4.tgz#3501d3d09fd82768867bfc00a7be4bad62f62f4d"
+  integrity sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==
+  dependencies:
+    "@smithy/is-array-buffer" "^3.0.0"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-hex-encoding" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.11"
+    "@smithy/util-uri-escape" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/smithy-client@^3.4.4", "@smithy/smithy-client@^3.5.0":
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.5.0.tgz#65cff262801b009998c1196764ee69929ee06f8a"
+  integrity sha512-Y8FeOa7gbDfCWf7njrkoRATPa5eNLUEjlJS5z5rXatYuGkCb80LbHcu8AQR8qgAZZaNHCLyo2N+pxPsV7l+ivg==
+  dependencies:
+    "@smithy/core" "^2.5.5"
+    "@smithy/middleware-endpoint" "^3.2.5"
+    "@smithy/middleware-stack" "^3.0.11"
+    "@smithy/protocol-http" "^4.1.8"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-stream" "^3.3.2"
+    tslib "^2.6.2"
+
+"@smithy/types@^3.7.1", "@smithy/types@^3.7.2":
+  version "3.7.2"
+  resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.7.2.tgz#05cb14840ada6f966de1bf9a9c7dd86027343e10"
+  integrity sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/url-parser@^3.0.10", "@smithy/url-parser@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.11.tgz#e5f5ffabfb6230159167cf4cc970705fca6b8b2d"
+  integrity sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==
+  dependencies:
+    "@smithy/querystring-parser" "^3.0.11"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/util-base64@^3.0.0":
   version "3.0.0"
-  resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
-  integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+  resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017"
+  integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==
+  dependencies:
+    "@smithy/util-buffer-from" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
 
-"@types/execa@^0.9.0":
-  version "0.9.0"
-  resolved "https://registry.yarnpkg.com/@types/execa/-/execa-0.9.0.tgz#9b025d2755f17e80beaf9368c3f4f319d8b0fb93"
-  integrity sha512-mgfd93RhzjYBUHHV532turHC2j4l/qxsF/PbfDmprHDEUHmNZGlDn1CEsulGK3AfsPdhkWzZQT/S/k0UGhLGsA==
+"@smithy/util-body-length-browser@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded"
+  integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==
   dependencies:
-    "@types/node" "*"
+    tslib "^2.6.2"
 
-"@types/expect@^1.20.4":
-  version "1.20.4"
-  resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5"
-  integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==
+"@smithy/util-body-length-node@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d"
+  integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==
+  dependencies:
+    tslib "^2.6.2"
 
-"@types/fs-extra@^9.0":
-  version "9.0.13"
-  resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
-  integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==
+"@smithy/util-buffer-from@^2.2.0":
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b"
+  integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==
   dependencies:
-    "@types/node" "*"
+    "@smithy/is-array-buffer" "^2.2.0"
+    tslib "^2.6.2"
+
+"@smithy/util-buffer-from@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3"
+  integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==
+  dependencies:
+    "@smithy/is-array-buffer" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/util-config-provider@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe"
+  integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-browser@^3.0.27", "@smithy/util-defaults-mode-browser@^3.0.30":
+  version "3.0.30"
+  resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.30.tgz#6c0d95af3f15bef8f1fe3f6217cc4f5ba8df5554"
+  integrity sha512-nLuGmgfcr0gzm64pqF2UT4SGWVG8UGviAdayDlVzJPNa6Z4lqvpDzdRXmLxtOdEjVlTOEdpZ9dd3ZMMu488mzg==
+  dependencies:
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    bowser "^2.11.0"
+    tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-node@^3.0.27", "@smithy/util-defaults-mode-node@^3.0.30":
+  version "3.0.30"
+  resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.30.tgz#33cdb02f90944b9ff221e2f8e0904a63ac1e335f"
+  integrity sha512-OD63eWoH68vp75mYcfYyuVH+p7Li/mY4sYOROnauDrtObo1cS4uWfsy/zhOTW8F8ZPxQC1ZXZKVxoxvMGUv2Ow==
+  dependencies:
+    "@smithy/config-resolver" "^3.0.13"
+    "@smithy/credential-provider-imds" "^3.2.8"
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/property-provider" "^3.1.11"
+    "@smithy/smithy-client" "^3.5.0"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/util-endpoints@^2.1.6", "@smithy/util-endpoints@^2.1.7":
+  version "2.1.7"
+  resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz#a088ebfab946a7219dd4763bfced82709894b82d"
+  integrity sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.12"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/util-hex-encoding@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6"
+  integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/util-middleware@^3.0.10", "@smithy/util-middleware@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.11.tgz#2ab5c17266b42c225e62befcffb048afa682b5bf"
+  integrity sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==
+  dependencies:
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/util-retry@^3.0.10", "@smithy/util-retry@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.11.tgz#d267e5ccb290165cee69732547fea17b695a7425"
+  integrity sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==
+  dependencies:
+    "@smithy/service-error-classification" "^3.0.11"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@smithy/util-stream@^3.3.1", "@smithy/util-stream@^3.3.2":
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.3.2.tgz#daeea26397e8541cf2499ce65bf0b8d528cba421"
+  integrity sha512-sInAqdiVeisUGYAv/FrXpmJ0b4WTFmciTRqzhb7wVuem9BHvhIG7tpiYHLDWrl2stOokNZpTTGqz3mzB2qFwXg==
+  dependencies:
+    "@smithy/fetch-http-handler" "^4.1.2"
+    "@smithy/node-http-handler" "^3.3.2"
+    "@smithy/types" "^3.7.2"
+    "@smithy/util-base64" "^3.0.0"
+    "@smithy/util-buffer-from" "^3.0.0"
+    "@smithy/util-hex-encoding" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/util-uri-escape@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54"
+  integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/util-utf8@^2.0.0":
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5"
+  integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==
+  dependencies:
+    "@smithy/util-buffer-from" "^2.2.0"
+    tslib "^2.6.2"
+
+"@smithy/util-utf8@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a"
+  integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==
+  dependencies:
+    "@smithy/util-buffer-from" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/util-waiter@^3.1.9", "@smithy/util-waiter@^3.2.0":
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.2.0.tgz#1e52f870e77d2e5572025f7606053e6ff00df93d"
+  integrity sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==
+  dependencies:
+    "@smithy/abort-controller" "^3.1.9"
+    "@smithy/types" "^3.7.2"
+    tslib "^2.6.2"
+
+"@szmarczak/http-timer@^5.0.1":
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a"
+  integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==
+  dependencies:
+    defer-to-connect "^2.0.1"
+
+"@tsconfig/node10@^1.0.7":
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
+  integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==
+
+"@tsconfig/node12@^1.0.7":
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
+  integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
+
+"@tsconfig/node14@^1.0.0":
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
+  integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
 
-"@types/glob@*":
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
-  integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
+"@tsconfig/node16@^1.0.2":
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
+  integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
+
+"@types/async-retry@^1.4.5":
+  version "1.4.9"
+  resolved "https://registry.yarnpkg.com/@types/async-retry/-/async-retry-1.4.9.tgz#47d118e835864d633b5208a78a6907b1b44e50bc"
+  integrity sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==
   dependencies:
-    "@types/events" "*"
-    "@types/minimatch" "*"
-    "@types/node" "*"
+    "@types/retry" "*"
 
-"@types/http-cache-semantics@*":
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
-  integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
+"@types/chai@^4.3.17":
+  version "4.3.20"
+  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc"
+  integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==
 
-"@types/inquirer@*":
-  version "7.3.1"
-  resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-7.3.1.tgz#1f231224e7df11ccfaf4cf9acbcc3b935fea292d"
-  integrity sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g==
+"@types/cli-progress@^3.11.5", "@types/cli-progress@^3.11.6":
+  version "3.11.6"
+  resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.6.tgz#94b334ebe4190f710e51c1bf9b4fedb681fa9e45"
+  integrity sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==
   dependencies:
-    "@types/through" "*"
-    rxjs "^6.4.0"
-
-"@types/json-schema@*", "@types/json-schema@^7.0.7":
-  version "7.0.9"
-  resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
-  integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
+    "@types/node" "*"
 
-"@types/keyv@^3.1.4":
-  version "3.1.4"
-  resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
-  integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
+"@types/conventional-commits-parser@^5.0.0":
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#8c9d23e0b415b24b91626d07017303755d542dc8"
+  integrity sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==
   dependencies:
     "@types/node" "*"
 
-"@types/lodash.template@^4.5.0":
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/@types/lodash.template/-/lodash.template-4.5.0.tgz#277654af717ed37ce2687c69f8f221c550276b7a"
-  integrity sha512-4LgHxK16IPbGR7TmXpPvNT7iNGsLCdQY6Rc0mi1a/JECt8et/D4hx6NMVAJej/d932sj1mJsg0QYHKL189O0Qw==
+"@types/debug@^4.1.12":
+  version "4.1.12"
+  resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
+  integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
   dependencies:
-    "@types/lodash" "*"
+    "@types/ms" "*"
 
-"@types/lodash@*", "@types/lodash@^4.14.191":
-  version "4.14.191"
-  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
-  integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+"@types/ejs@^3.1.5":
+  version "3.1.5"
+  resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.5.tgz#49d738257cc73bafe45c13cb8ff240683b4d5117"
+  integrity sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==
 
-"@types/mem-fs-editor@*":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@types/mem-fs-editor/-/mem-fs-editor-7.0.0.tgz#e6576e0f66e20055481b2cdbf193457f1a2c4e65"
-  integrity sha512-fTwoRtwv7YYLnzZmkOOzlrCZBJQssUcBCHxy7y52iUyxkqVxXCDOSis9yQbanOMYHnijIEtkIhep8YTMeAuVDw==
+"@types/fs-extra@^9.0":
+  version "9.0.13"
+  resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
+  integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==
   dependencies:
-    "@types/ejs" "*"
-    "@types/glob" "*"
-    "@types/json-schema" "*"
-    "@types/mem-fs" "*"
     "@types/node" "*"
-    "@types/vinyl" "*"
 
-"@types/mem-fs@*":
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/@types/mem-fs/-/mem-fs-1.1.2.tgz#e7e4cc741225dea109b5f3ceb519b45f353e1393"
-  integrity sha512-tt+4IoDO8/wmtaP2bHnB91c8AnzYtR9MK6NxfcZY9E3XgtmzOiFMeSXu3EZrBeevd0nJ87iGoUiFDGsb9QUvew==
+"@types/glob@~7.2.0":
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
+  integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
   dependencies:
+    "@types/minimatch" "*"
     "@types/node" "*"
-    "@types/vinyl" "*"
 
-"@types/minimatch@*", "@types/minimatch@^3.0.3":
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
-  integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+"@types/http-cache-semantics@^4.0.2":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
+  integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
 
-"@types/minimist@^1.2.0":
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
-  integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==
+"@types/json-schema@^7.0.12":
+  version "7.0.15"
+  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+  integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
 
-"@types/mocha@^8.2.3":
-  version "8.2.3"
-  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323"
-  integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==
+"@types/json5@^0.0.29":
+  version "0.0.29"
+  resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+  integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
 
-"@types/node@*", "@types/node@^15.6.1":
-  version "15.14.9"
-  resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa"
-  integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==
+"@types/lodash@^4.17.13":
+  version "4.17.13"
+  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.13.tgz#786e2d67cfd95e32862143abe7463a7f90c300eb"
+  integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==
 
-"@types/node@^14.18.34":
-  version "14.18.34"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.34.tgz#cd2e6fa0dbfb08a62582a7b967558e73c32061ec"
-  integrity sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==
+"@types/minimatch@*":
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
+  integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
 
-"@types/normalize-package-data@^2.4.0":
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
-  integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
+"@types/mocha@^10.0.10":
+  version "10.0.10"
+  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0"
+  integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==
 
-"@types/read-pkg@^5.1.0":
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/@types/read-pkg/-/read-pkg-5.1.0.tgz#5e0ba3323defbea679d645cd6f9985ea6ec8cb59"
-  integrity sha512-YOrcNByG1rPqIMhEMC1xU4SeFHcvQmHkl8yT6M4qPr+8eM1OBxRFJWog2uO+kx5Ept48Wdv+DuriUAVMC+LbQA==
-  dependencies:
-    read-pkg "*"
+"@types/ms@*":
+  version "0.7.34"
+  resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433"
+  integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
 
-"@types/responselike@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
-  integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==
+"@types/mute-stream@^0.0.4":
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478"
+  integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==
   dependencies:
     "@types/node" "*"
 
-"@types/semver@^7.3.13":
-  version "7.3.13"
-  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
-  integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
-
-"@types/shelljs@^0.8.11":
-  version "0.8.11"
-  resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.11.tgz#17a5696c825974e96828e96e89585d685646fcb8"
-  integrity sha512-x9yaMvEh5BEaZKeVQC4vp3l+QoFj3BXcd4aYfuKSzIIyihjdVARAadYy3SMNIz0WCCdS2vB9JL/U6GQk5PaxQw==
+"@types/node@*", "@types/node@^22.5.5":
+  version "22.7.4"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc"
+  integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==
   dependencies:
-    "@types/glob" "*"
-    "@types/node" "*"
+    undici-types "~6.19.2"
 
-"@types/sinon@*":
-  version "7.5.0"
-  resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.0.tgz#f5a10c27175465a0b001b68d8b9f761582967cc6"
-  integrity sha512-NyzhuSBy97B/zE58cDw4NyGvByQbAHNP9069KVSgnXt/sc0T6MFRh0InKAeBVHJWdSXG1S3+PxgVIgKo9mTHbw==
+"@types/node@^18":
+  version "18.19.67"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.67.tgz#77c4b01641a1e3e1509aff7e10d39e4afd5ae06d"
+  integrity sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==
+  dependencies:
+    undici-types "~5.26.4"
 
-"@types/supports-color@^7.2.1":
-  version "7.2.1"
-  resolved "https://registry.yarnpkg.com/@types/supports-color/-/supports-color-7.2.1.tgz#58a6efe82d9eca92cf316b16112fcd2675ffa6c0"
-  integrity sha512-glb1BXM/pchMWTt9kg67CceKqyAW3NGBviNPKXN84JJhk3shqVpyi5d5MM4MWYoZHHk/Ioct7Yt1TNqQORiIAw==
+"@types/normalize-package-data@^2.4.0":
+  version "2.4.4"
+  resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901"
+  integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
 
-"@types/text-table@*":
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/@types/text-table/-/text-table-0.2.1.tgz#39c4d4a058a82f677392dfd09976e83d9b4c9264"
-  integrity sha512-dchbFCWfVgUSWEvhOkXGS7zjm+K7jCUvGrQkAHPk2Fmslfofp4HQTH2pqnQ3Pw5GPYv0zWa2AQjKtsfZThuemQ==
+"@types/retry@*":
+  version "0.12.5"
+  resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e"
+  integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==
 
-"@types/through@*":
-  version "0.0.30"
-  resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895"
-  integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==
-  dependencies:
-    "@types/node" "*"
+"@types/semver@^7.5.0", "@types/semver@^7.5.8":
+  version "7.5.8"
+  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
+  integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
 
-"@types/vinyl@*", "@types/vinyl@^2.0.4":
-  version "2.0.6"
-  resolved "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz#b2d134603557a7c3d2b5d3dc23863ea2b5eb29b0"
-  integrity sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==
+"@types/shelljs@^0.8.11":
+  version "0.8.15"
+  resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.15.tgz#22c6ab9dfe05cec57d8e6cb1a95ea173aee9fcac"
+  integrity sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==
   dependencies:
-    "@types/expect" "^1.20.4"
+    "@types/glob" "~7.2.0"
     "@types/node" "*"
 
-"@types/write-json-file@^3.2.1":
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/@types/write-json-file/-/write-json-file-3.2.1.tgz#50b3d8f09b74e5abd18a0be5580e03ef40d8d8ec"
-  integrity sha512-3vX7/kpNX3+FbGfV8wbONVsT6A1czgUjUjRCvbQyMu3TyjkHoCDH3caJz6JTHRziqQdy6M5+F7YRi14FV8eRSw==
+"@types/sinon@^17.0.3":
+  version "17.0.3"
+  resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-17.0.3.tgz#9aa7e62f0a323b9ead177ed23a36ea757141a5fa"
+  integrity sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==
   dependencies:
-    write-json-file "*"
+    "@types/sinonjs__fake-timers" "*"
 
-"@types/yeoman-environment@*":
-  version "2.10.5"
-  resolved "https://registry.yarnpkg.com/@types/yeoman-environment/-/yeoman-environment-2.10.5.tgz#822d4c634f878e1f168231d1e511110897d7b82e"
-  integrity sha512-L2L/WQFV3O3aEyGsx8wbrt6/qfngvUnFtEOS2P8G3qYDQv9ycozHOnXY40vbZSNXEWVXH1G0haqoW2fCSSTqQA==
-  dependencies:
-    "@types/diff" "*"
-    "@types/inquirer" "*"
-    "@types/mem-fs" "*"
-    "@types/text-table" "*"
-    "@types/yeoman-generator" "*"
-    chalk "^4.1.0"
-    rxjs "^6.4.0"
+"@types/sinonjs__fake-timers@*":
+  version "8.1.5"
+  resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2"
+  integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==
 
-"@types/yeoman-generator@*", "@types/yeoman-generator@^5.2.10":
-  version "5.2.10"
-  resolved "https://registry.yarnpkg.com/@types/yeoman-generator/-/yeoman-generator-5.2.10.tgz#5b6a30d6f208bff985b5c8c9c5590a615f58b76c"
-  integrity sha512-Biim11Yamd2NYSt0nxYwmqf1sFwJX3LAEMnaavbwhtp8rSIz8/TaqTemJnZgm0Hwh7za5q9GPNw8EgVsYB/tlA==
-  dependencies:
-    "@types/debug" "*"
-    "@types/ejs" "*"
-    "@types/inquirer" "*"
-    "@types/mem-fs-editor" "*"
-    "@types/yeoman-environment" "*"
-    rxjs "^6.4.0"
+"@types/validate-npm-package-name@^4.0.2":
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz#df0f7dac25df7761f7476605ddac54cb1abda26e"
+  integrity sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==
 
-"@types/yosay@^2.0.1":
-  version "2.0.1"
-  resolved "https://registry.npmjs.org/@types/yosay/-/yosay-2.0.1.tgz#320ff6ea4ba5d464a7c8ba1011d64fbf5562a1b0"
-  integrity sha512-MUFT7qfnt9f3yYAOLBupoChVUFmZkrLP6DlkruFJ560djzlgW5lX5JfqDwDfzuCzcyVdRQTNVr7dx/Up9PKTmw==
+"@types/wrap-ansi@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd"
+  integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==
+
+"@typescript-eslint/eslint-plugin@^6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3"
+  integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==
+  dependencies:
+    "@eslint-community/regexpp" "^4.5.1"
+    "@typescript-eslint/scope-manager" "6.21.0"
+    "@typescript-eslint/type-utils" "6.21.0"
+    "@typescript-eslint/utils" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
+    debug "^4.3.4"
+    graphemer "^1.4.0"
+    ignore "^5.2.4"
+    natural-compare "^1.4.0"
+    semver "^7.5.4"
+    ts-api-utils "^1.0.1"
+
+"@typescript-eslint/parser@^6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b"
+  integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==
+  dependencies:
+    "@typescript-eslint/scope-manager" "6.21.0"
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/typescript-estree" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
+    debug "^4.3.4"
 
-"@typescript-eslint/eslint-plugin@^4.31.2":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
-  integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
+"@typescript-eslint/scope-manager@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1"
+  integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==
   dependencies:
-    "@typescript-eslint/experimental-utils" "4.33.0"
-    "@typescript-eslint/scope-manager" "4.33.0"
-    debug "^4.3.1"
-    functional-red-black-tree "^1.0.1"
-    ignore "^5.1.8"
-    regexpp "^3.1.0"
-    semver "^7.3.5"
-    tsutils "^3.21.0"
-
-"@typescript-eslint/experimental-utils@4.33.0":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
-  integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==
-  dependencies:
-    "@types/json-schema" "^7.0.7"
-    "@typescript-eslint/scope-manager" "4.33.0"
-    "@typescript-eslint/types" "4.33.0"
-    "@typescript-eslint/typescript-estree" "4.33.0"
-    eslint-scope "^5.1.1"
-    eslint-utils "^3.0.0"
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
 
-"@typescript-eslint/parser@^4.31.2":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
-  integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
+"@typescript-eslint/scope-manager@7.18.0":
+  version "7.18.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83"
+  integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==
   dependencies:
-    "@typescript-eslint/scope-manager" "4.33.0"
-    "@typescript-eslint/types" "4.33.0"
-    "@typescript-eslint/typescript-estree" "4.33.0"
-    debug "^4.3.1"
+    "@typescript-eslint/types" "7.18.0"
+    "@typescript-eslint/visitor-keys" "7.18.0"
 
-"@typescript-eslint/scope-manager@4.33.0":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
-  integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==
+"@typescript-eslint/type-utils@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e"
+  integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==
   dependencies:
-    "@typescript-eslint/types" "4.33.0"
-    "@typescript-eslint/visitor-keys" "4.33.0"
+    "@typescript-eslint/typescript-estree" "6.21.0"
+    "@typescript-eslint/utils" "6.21.0"
+    debug "^4.3.4"
+    ts-api-utils "^1.0.1"
 
-"@typescript-eslint/types@4.33.0":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
-  integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
+"@typescript-eslint/types@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d"
+  integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
 
-"@typescript-eslint/typescript-estree@4.33.0":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
-  integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==
-  dependencies:
-    "@typescript-eslint/types" "4.33.0"
-    "@typescript-eslint/visitor-keys" "4.33.0"
-    debug "^4.3.1"
-    globby "^11.0.3"
-    is-glob "^4.0.1"
-    semver "^7.3.5"
-    tsutils "^3.21.0"
+"@typescript-eslint/types@7.18.0":
+  version "7.18.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9"
+  integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==
 
-"@typescript-eslint/visitor-keys@4.33.0":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
-  integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==
+"@typescript-eslint/typescript-estree@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46"
+  integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==
   dependencies:
-    "@typescript-eslint/types" "4.33.0"
-    eslint-visitor-keys "^2.0.0"
-
-"@ungap/promise-all-settled@1.1.2":
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
-  integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    minimatch "9.0.3"
+    semver "^7.5.4"
+    ts-api-utils "^1.0.1"
+
+"@typescript-eslint/typescript-estree@7.18.0":
+  version "7.18.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931"
+  integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==
+  dependencies:
+    "@typescript-eslint/types" "7.18.0"
+    "@typescript-eslint/visitor-keys" "7.18.0"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    minimatch "^9.0.4"
+    semver "^7.6.0"
+    ts-api-utils "^1.3.0"
+
+"@typescript-eslint/utils@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134"
+  integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==
+  dependencies:
+    "@eslint-community/eslint-utils" "^4.4.0"
+    "@types/json-schema" "^7.0.12"
+    "@types/semver" "^7.5.0"
+    "@typescript-eslint/scope-manager" "6.21.0"
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/typescript-estree" "6.21.0"
+    semver "^7.5.4"
+
+"@typescript-eslint/utils@^6.13.0 || ^7.0.0":
+  version "7.18.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f"
+  integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==
+  dependencies:
+    "@eslint-community/eslint-utils" "^4.4.0"
+    "@typescript-eslint/scope-manager" "7.18.0"
+    "@typescript-eslint/types" "7.18.0"
+    "@typescript-eslint/typescript-estree" "7.18.0"
+
+"@typescript-eslint/visitor-keys@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47"
+  integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==
+  dependencies:
+    "@typescript-eslint/types" "6.21.0"
+    eslint-visitor-keys "^3.4.1"
+
+"@typescript-eslint/visitor-keys@7.18.0":
+  version "7.18.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7"
+  integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==
+  dependencies:
+    "@typescript-eslint/types" "7.18.0"
+    eslint-visitor-keys "^3.4.3"
+
+"@ungap/structured-clone@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
+  integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
 
-JSONStream@^1.0.4:
+JSONStream@^1.3.5:
   version "1.3.5"
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
   integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
@@ -1148,61 +2714,32 @@ JSONStream@^1.0.4:
     jsonparse "^1.2.0"
     through ">=2.2.7 <3"
 
-abbrev@1:
-  version "1.1.1"
-  resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-  integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-acorn-jsx@^5.3.1:
-  version "5.3.1"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
-  integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
+acorn-jsx@^5.3.2:
+  version "5.3.2"
+  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
 acorn-walk@^8.1.1:
-  version "8.2.0"
-  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
-  integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-
-acorn@^7.4.0:
-  version "7.4.1"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
-  integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
-acorn@^8.4.1:
-  version "8.7.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
-  integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
-
-add-stream@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
-  integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=
-
-agent-base@6, agent-base@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
-  integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+  version "8.3.4"
+  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7"
+  integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==
   dependencies:
-    debug "4"
+    acorn "^8.11.0"
 
-agentkeepalive@^4.1.3:
-  version "4.2.0"
-  resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz#616ce94ccb41d1a39a45d203d8076fe98713062d"
-  integrity sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==
-  dependencies:
-    debug "^4.1.0"
-    depd "^1.1.2"
-    humanize-ms "^1.2.1"
+acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0:
+  version "8.12.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
+  integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
 
 aggregate-error@^3.0.0:
   version "3.1.0"
-  resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+  resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
   integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
   dependencies:
     clean-stack "^2.0.0"
     indent-string "^4.0.0"
 
-ajv@^6.10.0, ajv@^6.12.4:
+ajv@^6.12.4:
   version "6.12.6"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -1212,64 +2749,46 @@ ajv@^6.10.0, ajv@^6.12.4:
     json-schema-traverse "^0.4.1"
     uri-js "^4.2.2"
 
-ajv@^8.0.1:
-  version "8.7.1"
-  resolved "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz#52be6f1736b076074798124293618f132ad07a7e"
-  integrity sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==
+ajv@^8.11.0:
+  version "8.17.1"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
+  integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
   dependencies:
-    fast-deep-equal "^3.1.1"
+    fast-deep-equal "^3.1.3"
+    fast-uri "^3.0.1"
     json-schema-traverse "^1.0.0"
     require-from-string "^2.0.2"
-    uri-js "^4.2.2"
-
-ansi-colors@4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
-  integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
-ansi-colors@^3.2.1:
-  version "3.2.4"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
-  integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
 
-ansi-escapes@^3.1.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
-  integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+ansi-colors@^4.1.3:
+  version "4.1.3"
+  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
+  integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
 
-ansi-escapes@^4.2.1, ansi-escapes@^4.3.2:
+ansi-escapes@^4.3.2:
   version "4.3.2"
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
   integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
   dependencies:
     type-fest "^0.21.3"
 
-ansi-regex@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-  integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-regex@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
-  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+ansi-escapes@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7"
+  integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==
+  dependencies:
+    environment "^1.0.0"
 
 ansi-regex@^5.0.1:
   version "5.0.1"
-  resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
   integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
 
-ansi-styles@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-  integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+ansi-regex@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
+  integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
 
-ansi-styles@^3.0.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ansi-styles@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
   integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
@@ -1283,36 +2802,45 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.1, ansi-styles@^4.3.0:
   dependencies:
     color-convert "^2.0.1"
 
+ansi-styles@^6.0.0, ansi-styles@^6.2.1:
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
+  integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
 ansicolors@~0.3.2:
   version "0.3.2"
   resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
-  integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=
+  integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
+
+ansis@^3.3.1, ansis@^3.3.2, ansis@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.4.0.tgz#d49ebb72f228aa122733a585c600dcba4f5f0838"
+  integrity sha512-zVESKSQhWaPhGaWiKj1k+UqvpC7vPBBgG3hjQEeIx2YGzylWt8qA3ziAzRuUtm0OnaGsZKjIvfl8D/sJTt/I0w==
 
 anymatch@~3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
-  integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
   dependencies:
     normalize-path "^3.0.0"
     picomatch "^2.0.4"
 
-"aproba@^1.0.3 || ^2.0.0":
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
-  integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
-
-are-we-there-yet@^2.0.0:
+append-transform@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
-  integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==
+  resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12"
+  integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==
   dependencies:
-    delegates "^1.0.0"
-    readable-stream "^3.6.0"
+    default-require-extensions "^3.0.0"
+
+archy@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
+  integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==
 
 arg@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0"
-  integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==
+  version "4.1.3"
+  resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+  integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
 
 argparse@^1.0.7:
   version "1.0.10"
@@ -1326,40 +2854,81 @@ argparse@^2.0.1:
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
   integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 
-array-differ@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
-  integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
-
-array-find-index@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
-  integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+array-buffer-byte-length@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
+  integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
+  dependencies:
+    call-bind "^1.0.5"
+    is-array-buffer "^3.0.4"
 
 array-ify@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
-  integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
+  integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==
+
+array-includes@^3.1.8:
+  version "3.1.8"
+  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
+  integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
+  dependencies:
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.2"
+    es-object-atoms "^1.0.0"
+    get-intrinsic "^1.2.4"
+    is-string "^1.0.7"
 
 array-union@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
   integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
 
-arrify@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-  integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+array.prototype.findlastindex@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d"
+  integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==
+  dependencies:
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.2"
+    es-errors "^1.3.0"
+    es-object-atoms "^1.0.0"
+    es-shim-unscopables "^1.0.2"
 
-arrify@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
-  integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+array.prototype.flat@^1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18"
+  integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    es-shim-unscopables "^1.0.0"
 
-asap@^2.0.0:
-  version "2.0.6"
-  resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
-  integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
+array.prototype.flatmap@^1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527"
+  integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==
+  dependencies:
+    call-bind "^1.0.2"
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    es-shim-unscopables "^1.0.0"
+
+arraybuffer.prototype.slice@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
+  integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
+  dependencies:
+    array-buffer-byte-length "^1.0.1"
+    call-bind "^1.0.5"
+    define-properties "^1.2.1"
+    es-abstract "^1.22.3"
+    es-errors "^1.2.1"
+    get-intrinsic "^1.2.3"
+    is-array-buffer "^3.0.4"
+    is-shared-array-buffer "^1.0.2"
 
 assertion-error@^1.1.0:
   version "1.1.0"
@@ -1371,82 +2940,39 @@ astral-regex@^2.0.0:
   resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
   integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
 
-async@^3.2.3:
-  version "3.2.4"
-  resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
-  integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
+async-retry@^1.3.3:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280"
+  integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==
+  dependencies:
+    retry "0.13.1"
 
-at-least-node@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
-  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+async@^3.2.3:
+  version "3.2.6"
+  resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
+  integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
 
-available-typed-arrays@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
-  integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
-
-aws-sdk@^2.1231.0:
-  version "2.1231.0"
-  resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1231.0.tgz#c02e83b095211d9f6dfb540fd47fa69190af9c0d"
-  integrity sha512-ONBuRsOxsu0zL8u/Vmz49tPWi9D4ls2pjb6szdfSx9VQef7bOnWe9gJpWoA94OTzcjOWsvjsG7UgjvQJkIuPBg==
-  dependencies:
-    buffer "4.9.2"
-    events "1.1.1"
-    ieee754 "1.1.13"
-    jmespath "0.16.0"
-    querystring "0.2.0"
-    sax "1.2.1"
-    url "0.10.3"
-    util "^0.12.4"
-    uuid "8.0.0"
-    xml2js "0.4.19"
+available-typed-arrays@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+  integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+  dependencies:
+    possible-typed-array-names "^1.0.0"
 
 balanced-match@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 
-base64-js@^1.0.2, base64-js@^1.3.1:
-  version "1.5.1"
-  resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
-  integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
-before-after-hook@^2.2.0:
-  version "2.2.2"
-  resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
-  integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
-
-bin-links@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz#1ff241c86d2c29b24ae52f49544db5d78a4eb967"
-  integrity sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==
-  dependencies:
-    cmd-shim "^4.0.1"
-    mkdirp-infer-owner "^2.0.0"
-    npm-normalize-package-bin "^1.0.0"
-    read-cmd-shim "^2.0.0"
-    rimraf "^3.0.0"
-    write-file-atomic "^3.0.3"
-
 binary-extensions@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
-  integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
-
-binaryextensions@^4.15.0, binaryextensions@^4.16.0:
-  version "4.18.0"
-  resolved "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz#22aeada2d14de062c60e8ca59a504a5636a76ceb"
-  integrity sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw==
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
+  integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
 
-bl@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
-  integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
-  dependencies:
-    buffer "^5.5.0"
-    inherits "^2.0.4"
-    readable-stream "^3.4.0"
+bowser@^2.11.0:
+  version "2.11.0"
+  resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
+  integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
 
 brace-expansion@^1.1.7:
   version "1.1.11"
@@ -1456,146 +2982,98 @@ brace-expansion@^1.1.7:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
 
-braces@^3.0.1, braces@~3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
-  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+brace-expansion@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+  integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+  dependencies:
+    balanced-match "^1.0.0"
+
+braces@^3.0.3, braces@~3.0.2:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+  integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
   dependencies:
-    fill-range "^7.0.1"
+    fill-range "^7.1.1"
 
-browser-stdout@1.3.1:
+browser-stdout@^1.3.1:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
   integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
 
-browserslist@^4.17.5:
-  version "4.17.6"
-  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d"
-  integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==
+browserslist@^4.24.0:
+  version "4.24.0"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4"
+  integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==
   dependencies:
-    caniuse-lite "^1.0.30001274"
-    electron-to-chromium "^1.3.886"
-    escalade "^3.1.1"
-    node-releases "^2.0.1"
-    picocolors "^1.0.0"
+    caniuse-lite "^1.0.30001663"
+    electron-to-chromium "^1.5.28"
+    node-releases "^2.0.18"
+    update-browserslist-db "^1.1.0"
 
-buffer@4.9.2:
-  version "4.9.2"
-  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
-  integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
-  dependencies:
-    base64-js "^1.0.2"
-    ieee754 "^1.1.4"
-    isarray "^1.0.0"
+builtin-modules@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
+  integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
 
-buffer@^5.5.0:
-  version "5.7.1"
-  resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
-  integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+builtins@^5.0.1:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8"
+  integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==
   dependencies:
-    base64-js "^1.3.1"
-    ieee754 "^1.1.13"
-
-builtin-modules@^3.0.0:
-  version "3.2.0"
-  resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
-  integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
-
-builtins@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
-  integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
-
-cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0:
-  version "15.3.0"
-  resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb"
-  integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==
-  dependencies:
-    "@npmcli/fs" "^1.0.0"
-    "@npmcli/move-file" "^1.0.1"
-    chownr "^2.0.0"
-    fs-minipass "^2.0.0"
-    glob "^7.1.4"
-    infer-owner "^1.0.4"
-    lru-cache "^6.0.0"
-    minipass "^3.1.1"
-    minipass-collect "^1.0.2"
-    minipass-flush "^1.0.5"
-    minipass-pipeline "^1.2.2"
-    mkdirp "^1.0.3"
-    p-map "^4.0.0"
-    promise-inflight "^1.0.1"
-    rimraf "^3.0.2"
-    ssri "^8.0.1"
-    tar "^6.0.2"
-    unique-filename "^1.1.1"
-
-cacheable-lookup@^5.0.3:
-  version "5.0.4"
-  resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
-  integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
+    semver "^7.0.0"
 
-cacheable-request@^7.0.2:
-  version "7.0.2"
-  resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27"
-  integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
-  dependencies:
-    clone-response "^1.0.2"
-    get-stream "^5.1.0"
-    http-cache-semantics "^4.0.0"
-    keyv "^4.0.0"
-    lowercase-keys "^2.0.0"
-    normalize-url "^6.0.1"
-    responselike "^2.0.0"
-
-call-bind@^1.0.0, call-bind@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
-  integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+cacheable-lookup@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27"
+  integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==
+
+cacheable-request@^10.2.8:
+  version "10.2.14"
+  resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d"
+  integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==
+  dependencies:
+    "@types/http-cache-semantics" "^4.0.2"
+    get-stream "^6.0.1"
+    http-cache-semantics "^4.1.1"
+    keyv "^4.5.3"
+    mimic-response "^4.0.0"
+    normalize-url "^8.0.0"
+    responselike "^3.0.0"
+
+caching-transform@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f"
+  integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==
   dependencies:
-    function-bind "^1.1.1"
-    get-intrinsic "^1.0.2"
-
-callsites@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3"
-  integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==
+    hasha "^5.0.0"
+    make-dir "^3.0.0"
+    package-hash "^4.0.0"
+    write-file-atomic "^3.0.0"
 
-camelcase-keys@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
-  integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+  integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
   dependencies:
-    camelcase "^2.0.0"
-    map-obj "^1.0.0"
+    es-define-property "^1.0.0"
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+    get-intrinsic "^1.2.4"
+    set-function-length "^1.2.1"
 
-camelcase-keys@^4.0.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
-  integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=
-  dependencies:
-    camelcase "^4.1.0"
-    map-obj "^2.0.0"
-    quick-lru "^1.0.0"
+callsites@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
 
-camelcase-keys@^6.2.2:
-  version "6.2.2"
-  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
-  integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+camel-case@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+  integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
   dependencies:
-    camelcase "^5.3.1"
-    map-obj "^4.0.0"
-    quick-lru "^4.0.1"
-
-camelcase@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-  integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-
-camelcase@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
-  integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+    pascal-case "^3.1.2"
+    tslib "^2.0.3"
 
 camelcase@^5.0.0, camelcase@^5.3.1:
   version "5.3.1"
@@ -1603,48 +3081,46 @@ camelcase@^5.0.0, camelcase@^5.3.1:
   integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
 
 camelcase@^6.0.0:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
-  integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+  version "6.3.0"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+  integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-lite@^1.0.30001663:
+  version "1.0.30001666"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz#112d77e80f1762f62a1b71ba92164e0cb3f3dd13"
+  integrity sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==
 
-caniuse-lite@^1.0.30001274:
-  version "1.0.30001279"
-  resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz#eb06818da481ef5096a3b3760f43e5382ed6b0ce"
-  integrity sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==
+capital-case@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669"
+  integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==
+  dependencies:
+    no-case "^3.0.4"
+    tslib "^2.0.3"
+    upper-case-first "^2.0.2"
 
 cardinal@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505"
-  integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU=
+  integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==
   dependencies:
     ansicolors "~0.3.2"
     redeyed "~2.1.0"
 
-chai@^4.3.7:
-  version "4.3.7"
-  resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51"
-  integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==
+chai@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8"
+  integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==
   dependencies:
     assertion-error "^1.1.0"
-    check-error "^1.0.2"
-    deep-eql "^4.1.2"
-    get-func-name "^2.0.0"
-    loupe "^2.3.1"
+    check-error "^1.0.3"
+    deep-eql "^4.1.3"
+    get-func-name "^2.0.2"
+    loupe "^2.3.6"
     pathval "^1.1.1"
-    type-detect "^4.0.5"
-
-chalk@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-  integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
-  dependencies:
-    ansi-styles "^2.2.1"
-    escape-string-regexp "^1.0.2"
-    has-ansi "^2.0.0"
-    strip-ansi "^3.0.0"
-    supports-color "^2.0.0"
+    type-detect "^4.1.0"
 
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1:
+chalk@^2.4.2:
   version "2.4.2"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
   integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1653,15 +3129,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1:
     escape-string-regexp "^1.0.5"
     supports-color "^5.3.0"
 
-chalk@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
-  integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
-chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
+chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
   integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -1669,20 +3137,45 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
+chalk@^5.3.0, chalk@~5.3.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
+  integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
+
+change-case@^4:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12"
+  integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==
+  dependencies:
+    camel-case "^4.1.2"
+    capital-case "^1.0.4"
+    constant-case "^3.0.4"
+    dot-case "^3.0.4"
+    header-case "^2.0.4"
+    no-case "^3.0.4"
+    param-case "^3.0.4"
+    pascal-case "^3.1.2"
+    path-case "^3.0.4"
+    sentence-case "^3.0.4"
+    snake-case "^3.0.4"
+    tslib "^2.0.3"
+
 chardet@^0.7.0:
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
   integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
 
-check-error@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
-  integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
+check-error@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
+  integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
+  dependencies:
+    get-func-name "^2.0.2"
 
-chokidar@3.5.3:
-  version "3.5.3"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
-  integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+chokidar@^3.5.3:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+  integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
   dependencies:
     anymatch "~3.1.2"
     braces "~3.0.2"
@@ -1694,20 +3187,15 @@ chokidar@3.5.3:
   optionalDependencies:
     fsevents "~2.3.2"
 
-chownr@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
-  integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-
-ci-info@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6"
-  integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==
+ci-info@^3.8.0:
+  version "3.9.0"
+  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
+  integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
 
 clean-regexp@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7"
-  integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc=
+  integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==
   dependencies:
     escape-string-regexp "^1.0.5"
 
@@ -1716,84 +3204,53 @@ clean-stack@^2.0.0:
   resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
   integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
 
-clean-stack@^3.0.0, clean-stack@^3.0.1:
+clean-stack@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8"
   integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==
   dependencies:
     escape-string-regexp "4.0.0"
 
-cli-boxes@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
-  integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
-
-cli-cursor@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
-  integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+cli-cursor@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38"
+  integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==
   dependencies:
-    restore-cursor "^3.1.0"
+    restore-cursor "^5.0.0"
 
-cli-progress@^3.10.0, cli-progress@^3.12.0:
+cli-progress@^3.12.0:
   version "3.12.0"
   resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942"
   integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==
   dependencies:
     string-width "^4.2.3"
 
-cli-spinners@^2.5.0:
-  version "2.6.1"
-  resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d"
-  integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
+cli-spinners@^2.9.2:
+  version "2.9.2"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
+  integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
 
-cli-table@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
-  integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM=
+cli-truncate@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a"
+  integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==
   dependencies:
-    colors "1.0.3"
+    slice-ansi "^5.0.0"
+    string-width "^7.0.0"
 
-cli-ux@^4.9.3:
-  version "4.9.3"
-  resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-4.9.3.tgz#4c3e070c1ea23eef010bbdb041192e0661be84ce"
-  integrity sha512-/1owvF0SZ5Gn54cgrikJ0QskgTzeg30HGjkmjFoaHDJzAqFpuX1DBpFR8aLvsE1J5s9MgeYRENQK4BFwOag5VA==
-  dependencies:
-    "@oclif/errors" "^1.2.2"
-    "@oclif/linewrap" "^1.0.0"
-    "@oclif/screen" "^1.0.3"
-    ansi-escapes "^3.1.0"
-    ansi-styles "^3.2.1"
-    cardinal "^2.1.1"
-    chalk "^2.4.1"
-    clean-stack "^2.0.0"
-    extract-stack "^1.0.0"
-    fs-extra "^7.0.0"
-    hyperlinker "^1.0.0"
-    indent-string "^3.2.0"
-    is-wsl "^1.1.0"
-    lodash "^4.17.11"
-    password-prompt "^1.0.7"
-    semver "^5.6.0"
-    strip-ansi "^5.0.0"
-    supports-color "^5.5.0"
-    supports-hyperlinks "^1.0.1"
-    treeify "^1.1.0"
-    tslib "^1.9.3"
-
-cli-width@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
-  integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+cli-width@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5"
+  integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==
 
-cliui@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
-  integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+cliui@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+  integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
   dependencies:
-    string-width "^3.1.0"
-    strip-ansi "^5.2.0"
-    wrap-ansi "^5.1.0"
+    string-width "^4.2.0"
+    strip-ansi "^6.0.0"
+    wrap-ansi "^6.2.0"
 
 cliui@^7.0.2:
   version "7.0.4"
@@ -1804,53 +3261,14 @@ cliui@^7.0.2:
     strip-ansi "^6.0.0"
     wrap-ansi "^7.0.0"
 
-clone-buffer@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
-  integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
-
-clone-response@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3"
-  integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==
-  dependencies:
-    mimic-response "^1.0.0"
-
-clone-stats@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
-  integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
-
-clone@^1.0.2:
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
-  integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
-
-clone@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
-  integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-
-cloneable-readable@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65"
-  integrity sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==
-  dependencies:
-    inherits "^2.0.1"
-    process-nextick-args "^2.0.0"
-    readable-stream "^2.3.5"
-
-cmd-shim@^4.0.1:
-  version "4.1.0"
-  resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd"
-  integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==
+cliui@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+  integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
   dependencies:
-    mkdirp-infer-owner "^2.0.0"
-
-code-point-at@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+    string-width "^4.2.0"
+    strip-ansi "^6.0.1"
+    wrap-ansi "^7.0.0"
 
 color-convert@^1.9.0:
   version "1.9.3"
@@ -1869,42 +3287,51 @@ color-convert@^2.0.1:
 color-name@1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+  integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
 
-color-name@~1.1.4:
+color-name@^1.0.0, color-name@~1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
   integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
 
-color-support@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
-  integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+color-string@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+  integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+  dependencies:
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
 
-colors@1.0.3, colors@1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
-  integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+color@^4.2.3:
+  version "4.2.3"
+  resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
+  integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
+  dependencies:
+    color-convert "^2.0.1"
+    color-string "^1.9.0"
 
-commander@7.1.0:
-  version "7.1.0"
-  resolved "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff"
-  integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==
+colorette@^2.0.20:
+  version "2.0.20"
+  resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a"
+  integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
 
-common-ancestor-path@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
-  integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==
+commander@~12.1.0:
+  version "12.1.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
+  integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
 
-common-tags@^1.4.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
-  integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
+commitlint@^19:
+  version "19.6.1"
+  resolved "https://registry.yarnpkg.com/commitlint/-/commitlint-19.6.1.tgz#8fbfc2ee8cd62172360923679287841b536ee271"
+  integrity sha512-tU4or+Y2fDXepCZ44o8guEB9uwrRp4if4VupGH1CR+bsVS2zX6Gia4dndA7UPx8cWWw1tvRRJu5keA7RqfXf3w==
+  dependencies:
+    "@commitlint/cli" "^19.6.1"
+    "@commitlint/types" "^19.5.0"
 
 commondir@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-  integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+  integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
 
 compare-func@^2.0.0:
   version "2.0.0"
@@ -1919,303 +3346,148 @@ concat-map@0.0.1:
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
   integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 
-concurrently@^7.6.0:
-  version "7.6.0"
-  resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a"
-  integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==
-  dependencies:
-    chalk "^4.1.0"
-    date-fns "^2.29.1"
-    lodash "^4.17.21"
-    rxjs "^7.0.0"
-    shell-quote "^1.7.3"
-    spawn-command "^0.0.2-1"
-    supports-color "^8.1.0"
-    tree-kill "^1.2.2"
-    yargs "^17.3.1"
-
-confusing-browser-globals@1.0.10:
-  version "1.0.10"
-  resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
-  integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
-
-console-control-strings@^1.0.0, console-control-strings@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-  integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
-content-type@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-  integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
-conventional-changelog-angular@^5.0.12:
-  version "5.0.12"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9"
-  integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==
+config-chain@^1.1.11:
+  version "1.1.13"
+  resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
+  integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
   dependencies:
-    compare-func "^2.0.0"
-    q "^1.5.1"
+    ini "^1.3.4"
+    proto-list "~1.2.1"
 
-conventional-changelog-atom@^2.0.8:
-  version "2.0.8"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de"
-  integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==
-  dependencies:
-    q "^1.5.1"
+confusing-browser-globals@1.0.11:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81"
+  integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==
 
-conventional-changelog-cli@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz#9a7746cede92c6a8f27dc46692efaadfbed60daa"
-  integrity sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA==
+constant-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1"
+  integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==
   dependencies:
-    add-stream "^1.0.0"
-    conventional-changelog "^3.1.24"
-    lodash "^4.17.15"
-    meow "^8.0.0"
-    tempfile "^3.0.0"
+    no-case "^3.0.4"
+    tslib "^2.0.3"
+    upper-case "^2.0.2"
 
-conventional-changelog-codemirror@^2.0.8:
-  version "2.0.8"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc"
-  integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==
-  dependencies:
-    q "^1.5.1"
+content-type@^1.0.4:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
+  integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
 
-conventional-changelog-conventionalcommits@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz#a02e0b06d11d342fdc0f00c91d78265ed0bc0a62"
-  integrity sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==
+conventional-changelog-angular@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a"
+  integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==
   dependencies:
     compare-func "^2.0.0"
-    lodash "^4.17.15"
-    q "^1.5.1"
 
-conventional-changelog-core@^4.2.1:
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.1.tgz#f811ad98ab2ff080becafc61407509420c9b447d"
-  integrity sha512-8cH8/DEoD3e5Q6aeogdR5oaaKs0+mG6+f+Om0ZYt3PNv7Zo0sQhu4bMDRsqAF+UTekTAtP1W/C41jH/fkm8Jtw==
-  dependencies:
-    add-stream "^1.0.0"
-    conventional-changelog-writer "^4.0.18"
-    conventional-commits-parser "^3.2.0"
-    dateformat "^3.0.0"
-    get-pkg-repo "^1.0.0"
-    git-raw-commits "2.0.0"
-    git-remote-origin-url "^2.0.0"
-    git-semver-tags "^4.1.1"
-    lodash "^4.17.15"
-    normalize-package-data "^3.0.0"
-    q "^1.5.1"
-    read-pkg "^3.0.0"
-    read-pkg-up "^3.0.0"
-    shelljs "^0.8.3"
-    through2 "^4.0.0"
-
-conventional-changelog-ember@^2.0.9:
-  version "2.0.9"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962"
-  integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==
-  dependencies:
-    q "^1.5.1"
-
-conventional-changelog-eslint@^3.0.9:
-  version "3.0.9"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb"
-  integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==
-  dependencies:
-    q "^1.5.1"
-
-conventional-changelog-express@^2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8"
-  integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==
+conventional-changelog-conventionalcommits@^7.0.2:
+  version "7.0.2"
+  resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5"
+  integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==
   dependencies:
-    q "^1.5.1"
+    compare-func "^2.0.0"
 
-conventional-changelog-jquery@^3.0.11:
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf"
-  integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==
+conventional-commits-parser@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a"
+  integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==
   dependencies:
-    q "^1.5.1"
+    JSONStream "^1.3.5"
+    is-text-path "^2.0.0"
+    meow "^12.0.1"
+    split2 "^4.0.0"
 
-conventional-changelog-jshint@^2.0.9:
-  version "2.0.9"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff"
-  integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==
-  dependencies:
-    compare-func "^2.0.0"
-    q "^1.5.1"
+convert-source-map@^1.7.0:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+  integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
 
-conventional-changelog-preset-loader@^2.3.4:
-  version "2.3.4"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c"
-  integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==
+convert-source-map@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+  integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
 
-conventional-changelog-writer@^4.0.18:
-  version "4.0.18"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.18.tgz#10b73baa59c7befc69b360562f8b9cd19e63daf8"
-  integrity sha512-mAQDCKyB9HsE8Ko5cCM1Jn1AWxXPYV0v8dFPabZRkvsiWUul2YyAqbIaoMKF88Zf2ffnOPSvKhboLf3fnjo5/A==
-  dependencies:
-    compare-func "^2.0.0"
-    conventional-commits-filter "^2.0.7"
-    dateformat "^3.0.0"
-    handlebars "^4.7.6"
-    json-stringify-safe "^5.0.1"
-    lodash "^4.17.15"
-    meow "^8.0.0"
-    semver "^6.0.0"
-    split "^1.0.0"
-    through2 "^4.0.0"
-
-conventional-changelog@^3.1.24:
-  version "3.1.24"
-  resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.24.tgz#ebd180b0fd1b2e1f0095c4b04fd088698348a464"
-  integrity sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==
-  dependencies:
-    conventional-changelog-angular "^5.0.12"
-    conventional-changelog-atom "^2.0.8"
-    conventional-changelog-codemirror "^2.0.8"
-    conventional-changelog-conventionalcommits "^4.5.0"
-    conventional-changelog-core "^4.2.1"
-    conventional-changelog-ember "^2.0.9"
-    conventional-changelog-eslint "^3.0.9"
-    conventional-changelog-express "^2.0.6"
-    conventional-changelog-jquery "^3.0.11"
-    conventional-changelog-jshint "^2.0.9"
-    conventional-changelog-preset-loader "^2.3.4"
-
-conventional-commits-filter@^2.0.7:
-  version "2.0.7"
-  resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3"
-  integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==
-  dependencies:
-    lodash.ismatch "^4.4.0"
-    modify-values "^1.0.0"
-
-conventional-commits-parser@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.0.tgz#9e261b139ca4b7b29bcebbc54460da36894004ca"
-  integrity sha512-XmJiXPxsF0JhAKyfA2Nn+rZwYKJ60nanlbSWwwkGwLQFbugsc0gv1rzc7VbbUWAzJfR1qR87/pNgv9NgmxtBMQ==
+cosmiconfig-typescript-loader@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz#7f644503e1c2bff90aed2d29a637008f279646bb"
+  integrity sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==
   dependencies:
-    JSONStream "^1.0.4"
-    is-text-path "^1.0.1"
-    lodash "^4.17.15"
-    meow "^8.0.0"
-    split2 "^2.0.0"
-    through2 "^4.0.0"
-    trim-off-newlines "^1.0.0"
+    jiti "^2.4.1"
 
-convert-source-map@^1.7.0:
-  version "1.8.0"
-  resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
-  integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+cosmiconfig@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
+  integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
   dependencies:
-    safe-buffer "~5.1.1"
-
-core-util-is@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+    env-paths "^2.2.1"
+    import-fresh "^3.3.0"
+    js-yaml "^4.1.0"
+    parse-json "^5.2.0"
 
 create-require@^1.1.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
   integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
 
-cross-spawn@^6.0.0, cross-spawn@^6.0.5:
-  version "6.0.5"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
-  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
-  dependencies:
-    nice-try "^1.0.4"
-    path-key "^2.0.1"
-    semver "^5.5.0"
-    shebang-command "^1.2.0"
-    which "^1.2.9"
-
 cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
-  version "7.0.3"
-  resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
-  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+  version "7.0.5"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82"
+  integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==
   dependencies:
     path-key "^3.1.0"
     shebang-command "^2.0.0"
     which "^2.0.1"
 
-currently-unhandled@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
-  integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
-  dependencies:
-    array-find-index "^1.0.1"
+dargs@^8.0.0:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272"
+  integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==
 
-dargs@^4.0.1:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
-  integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=
+data-view-buffer@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
+  integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
   dependencies:
-    number-is-nan "^1.0.0"
+    call-bind "^1.0.6"
+    es-errors "^1.3.0"
+    is-data-view "^1.0.1"
 
-dargs@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
-  integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
-
-date-fns@^2.29.1:
-  version "2.29.3"
-  resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
-  integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
-
-dateformat@^3.0.0:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
-  integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
-
-dateformat@^4.5.0:
-  version "4.6.3"
-  resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5"
-  integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==
-
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
-  version "4.3.4"
-  resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
-  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+data-view-byte-length@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2"
+  integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
   dependencies:
-    ms "2.1.2"
+    call-bind "^1.0.7"
+    es-errors "^1.3.0"
+    is-data-view "^1.0.1"
 
-debug@4.3.3:
-  version "4.3.3"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
-  integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+data-view-byte-offset@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a"
+  integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
   dependencies:
-    ms "2.1.2"
+    call-bind "^1.0.6"
+    es-errors "^1.3.0"
+    is-data-view "^1.0.1"
 
-debug@^3.1.0:
-  version "3.2.6"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
-  integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+debug@^3.2.7:
+  version "3.2.7"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+  integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
   dependencies:
     ms "^2.1.1"
 
-debuglog@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
-  integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
-
-decamelize-keys@^1.0.0, decamelize-keys@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
-  integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.4.0, debug@~4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+  integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
   dependencies:
-    decamelize "^1.1.0"
-    map-obj "^1.0.0"
+    ms "^2.1.3"
 
-decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0:
+decamelize@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+  integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
 
 decamelize@^4.0.0:
   version "4.0.0"
@@ -2229,81 +3501,68 @@ decompress-response@^6.0.0:
   dependencies:
     mimic-response "^3.1.0"
 
-deep-eql@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.2.tgz#270ceb902f87724077e6f6449aed81463f42fc1c"
-  integrity sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==
+deep-eql@^4.1.3:
+  version "4.1.4"
+  resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7"
+  integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==
   dependencies:
     type-detect "^4.0.0"
 
-deep-extend@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
-  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
 deep-is@^0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 
-defaults@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
-  integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+default-require-extensions@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd"
+  integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==
   dependencies:
-    clone "^1.0.2"
+    strip-bom "^4.0.0"
 
-defer-to-connect@^2.0.0:
+defer-to-connect@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
   integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
 
-define-properties@^1.1.3, define-properties@^1.1.4:
+define-data-property@^1.0.1, define-data-property@^1.1.4:
   version "1.1.4"
-  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
-  integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+  resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+  integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+  dependencies:
+    es-define-property "^1.0.0"
+    es-errors "^1.3.0"
+    gopd "^1.0.1"
+
+define-properties@^1.2.0, define-properties@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
+  integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
   dependencies:
+    define-data-property "^1.0.1"
     has-property-descriptors "^1.0.0"
     object-keys "^1.1.1"
 
-delegates@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-  integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
-depd@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
-  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
-deprecation@^2.0.0, deprecation@^2.3.1:
-  version "2.3.1"
-  resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
-  integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
-
-detect-indent@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd"
-  integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==
-
-dezalgo@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
-  integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=
-  dependencies:
-    asap "^2.0.0"
-    wrappy "1"
+detect-indent@^7.0.1:
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25"
+  integrity sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==
 
-diff@5.0.0, diff@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
-  integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
+detect-newline@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-4.0.1.tgz#fcefdb5713e1fb8cb2839b8b6ee22e6716ab8f23"
+  integrity sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==
 
 diff@^4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
   integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
 
+diff@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
+  integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+
 dir-glob@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@@ -2311,6 +3570,13 @@ dir-glob@^3.0.1:
   dependencies:
     path-type "^4.0.0"
 
+doctrine@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+  integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+  dependencies:
+    esutils "^2.0.2"
+
 doctrine@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -2318,6 +3584,14 @@ doctrine@^3.0.0:
   dependencies:
     esutils "^2.0.2"
 
+dot-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+  integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
+  dependencies:
+    no-case "^3.0.4"
+    tslib "^2.0.3"
+
 dot-prop@^5.1.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
@@ -2325,105 +3599,139 @@ dot-prop@^5.1.0:
   dependencies:
     is-obj "^2.0.0"
 
-duplexer@~0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
-  integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
-
-ejs@^3.1.6, ejs@^3.1.8:
-  version "3.1.8"
-  resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
-  integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
+ejs@^3.1.10:
+  version "3.1.10"
+  resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
+  integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
   dependencies:
     jake "^10.8.5"
 
-electron-to-chromium@^1.3.886:
-  version "1.3.894"
-  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.894.tgz#54554ecb40d40ddac7241c4a42887e86180015d8"
-  integrity sha512-WY8pA4irAZ4cm/Pr7YFPtPLVqj3nU6d0SbfoHF6M7HZNONfPdAnYAarumqQ75go2LuN72uO9wGuCEqnfya/ytg==
+electron-to-chromium@^1.5.28:
+  version "1.5.31"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz#b1478418769dec72ea70d9fdf147a81491857f10"
+  integrity sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==
 
-emoji-regex@^7.0.1:
-  version "7.0.3"
-  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
-  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+emoji-regex@^10.3.0:
+  version "10.4.0"
+  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4"
+  integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==
 
 emoji-regex@^8.0.0:
   version "8.0.0"
   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
   integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
 
-encoding@^0.1.12:
-  version "0.1.13"
-  resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
-  integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
-  dependencies:
-    iconv-lite "^0.6.2"
-
-end-of-stream@^1.1.0:
-  version "1.4.4"
-  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
-  integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+enhanced-resolve@^5.15.0:
+  version "5.17.1"
+  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
+  integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
   dependencies:
-    once "^1.4.0"
+    graceful-fs "^4.2.4"
+    tapable "^2.2.0"
 
-enquirer@^2.3.5:
-  version "2.3.5"
-  resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381"
-  integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==
-  dependencies:
-    ansi-colors "^3.2.1"
-
-env-paths@^2.2.0:
+env-paths@^2.2.1:
   version "2.2.1"
-  resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+  resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
   integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
 
-err-code@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
-  integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+environment@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1"
+  integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==
 
-error-ex@^1.2.0, error-ex@^1.3.1:
+error-ex@^1.3.1:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
   integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
   dependencies:
     is-arrayish "^0.2.1"
 
-error@^10.4.0:
-  version "10.4.0"
-  resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487"
-  integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==
-
-es-abstract@^1.19.0, es-abstract@^1.19.5, es-abstract@^1.20.0:
-  version "1.20.3"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1"
-  integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==
-  dependencies:
-    call-bind "^1.0.2"
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
+  version "1.23.3"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
+  integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
+  dependencies:
+    array-buffer-byte-length "^1.0.1"
+    arraybuffer.prototype.slice "^1.0.3"
+    available-typed-arrays "^1.0.7"
+    call-bind "^1.0.7"
+    data-view-buffer "^1.0.1"
+    data-view-byte-length "^1.0.1"
+    data-view-byte-offset "^1.0.0"
+    es-define-property "^1.0.0"
+    es-errors "^1.3.0"
+    es-object-atoms "^1.0.0"
+    es-set-tostringtag "^2.0.3"
     es-to-primitive "^1.2.1"
-    function-bind "^1.1.1"
-    function.prototype.name "^1.1.5"
-    get-intrinsic "^1.1.3"
-    get-symbol-description "^1.0.0"
-    has "^1.0.3"
-    has-property-descriptors "^1.0.0"
+    function.prototype.name "^1.1.6"
+    get-intrinsic "^1.2.4"
+    get-symbol-description "^1.0.2"
+    globalthis "^1.0.3"
+    gopd "^1.0.1"
+    has-property-descriptors "^1.0.2"
+    has-proto "^1.0.3"
     has-symbols "^1.0.3"
-    internal-slot "^1.0.3"
-    is-callable "^1.2.6"
-    is-negative-zero "^2.0.2"
+    hasown "^2.0.2"
+    internal-slot "^1.0.7"
+    is-array-buffer "^3.0.4"
+    is-callable "^1.2.7"
+    is-data-view "^1.0.1"
+    is-negative-zero "^2.0.3"
     is-regex "^1.1.4"
-    is-shared-array-buffer "^1.0.2"
+    is-shared-array-buffer "^1.0.3"
     is-string "^1.0.7"
+    is-typed-array "^1.1.13"
     is-weakref "^1.0.2"
-    object-inspect "^1.12.2"
+    object-inspect "^1.13.1"
     object-keys "^1.1.1"
-    object.assign "^4.1.4"
-    regexp.prototype.flags "^1.4.3"
-    safe-regex-test "^1.0.0"
-    string.prototype.trimend "^1.0.5"
-    string.prototype.trimstart "^1.0.5"
+    object.assign "^4.1.5"
+    regexp.prototype.flags "^1.5.2"
+    safe-array-concat "^1.1.2"
+    safe-regex-test "^1.0.3"
+    string.prototype.trim "^1.2.9"
+    string.prototype.trimend "^1.0.8"
+    string.prototype.trimstart "^1.0.8"
+    typed-array-buffer "^1.0.2"
+    typed-array-byte-length "^1.0.1"
+    typed-array-byte-offset "^1.0.2"
+    typed-array-length "^1.0.6"
     unbox-primitive "^1.0.2"
+    which-typed-array "^1.1.15"
+
+es-define-property@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+  integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+  dependencies:
+    get-intrinsic "^1.2.4"
+
+es-errors@^1.2.1, es-errors@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+  integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
+es-object-atoms@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
+  integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
+  dependencies:
+    es-errors "^1.3.0"
+
+es-set-tostringtag@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
+  integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
+  dependencies:
+    get-intrinsic "^1.2.4"
+    has-tostringtag "^1.0.2"
+    hasown "^2.0.1"
+
+es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763"
+  integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==
+  dependencies:
+    hasown "^2.0.0"
 
 es-to-primitive@^1.2.1:
   version "1.2.1"
@@ -2434,136 +3742,194 @@ es-to-primitive@^1.2.1:
     is-date-object "^1.0.1"
     is-symbol "^1.0.2"
 
-escalade@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
-  integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+es6-error@^4.0.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
+  integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
+
+escalade@^3.1.1, escalade@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+  integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
 
 escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
   integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-eslint-config-oclif-typescript@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmjs.org/eslint-config-oclif-typescript/-/eslint-config-oclif-typescript-1.0.2.tgz#e0b04e9128220c22bf45df3ba454c76ea6aed6bc"
-  integrity sha512-QUldSp+y0C7tVT3pVNFUUeN53m2IqiY0VvWQNYt5LJoFcaFvrpEB8G3x17LFFku4jy9bg8d+MbkMG1alPwzm1w==
-  dependencies:
-    "@typescript-eslint/eslint-plugin" "^4.31.2"
-    "@typescript-eslint/parser" "^4.31.2"
-    eslint-config-xo-space "^0.29.0"
-    eslint-plugin-mocha "^9.0.0"
-    eslint-plugin-node "^11.1.0"
-
-eslint-config-oclif@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-4.0.0.tgz#90a07587f7be7c92ae3ce750ae11cf1e864239eb"
-  integrity sha512-5tkUQeC33rHAhJxaGeBGYIflDLumeV2qD/4XLBdXhB/6F/+Jnwdce9wYHSvkx0JUqUQShpQv8JEVkBp/zzD7hg==
-  dependencies:
-    eslint-config-xo-space "^0.27.0"
-    eslint-plugin-mocha "^9.0.0"
-    eslint-plugin-node "^11.1.0"
-    eslint-plugin-unicorn "^36.0.0"
-
-eslint-config-xo-space@^0.27.0:
-  version "0.27.0"
-  resolved "https://registry.npmjs.org/eslint-config-xo-space/-/eslint-config-xo-space-0.27.0.tgz#9663e41d7bedc0f345488377770565aa9b0085e0"
-  integrity sha512-b8UjW+nQyOkhiANVpIptqlKPyE7XRyQ40uQ1NoBhzVfu95gxfZGrpliq8ZHBpaOF2wCLZaexTSjg7Rvm99vj4A==
-  dependencies:
-    eslint-config-xo "^0.35.0"
-
-eslint-config-xo-space@^0.29.0:
-  version "0.29.0"
-  resolved "https://registry.npmjs.org/eslint-config-xo-space/-/eslint-config-xo-space-0.29.0.tgz#5bbd2d0ecb172c4e65022b8543ecb1f7d199b8e2"
-  integrity sha512-emUZVHjmzl3I1aO2M/2gEpqa/GHXTl7LF/vQeAX4W+mQIU+2kyqY97FkMnSc2J8Osoq+vCSXCY/HjFUmFIF/Ag==
-  dependencies:
-    eslint-config-xo "^0.38.0"
+  integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+eslint-config-oclif-typescript@^3.1.12:
+  version "3.1.12"
+  resolved "https://registry.yarnpkg.com/eslint-config-oclif-typescript/-/eslint-config-oclif-typescript-3.1.12.tgz#91089e770854cd29b69f359dc1b9d847ef588b18"
+  integrity sha512-hEXU/PEJyjeLiTrCmgcmx0+FHwVpqipkKSykesdMsk2v43Mqh5bq2j3cyxHXZBCOxpTACVlM6KG7d4LFaWoVHQ==
+  dependencies:
+    "@typescript-eslint/eslint-plugin" "^6.21.0"
+    "@typescript-eslint/parser" "^6.21.0"
+    eslint-config-xo-space "^0.35.0"
+    eslint-import-resolver-typescript "^3.6.3"
+    eslint-plugin-import "^2.31.0"
+    eslint-plugin-mocha "^10.5.0"
+    eslint-plugin-n "^15"
+    eslint-plugin-perfectionist "^2.11.0"
+
+eslint-config-oclif@^5.2.2:
+  version "5.2.2"
+  resolved "https://registry.yarnpkg.com/eslint-config-oclif/-/eslint-config-oclif-5.2.2.tgz#31e895f6880b23e1148fb006f91698e7ff41b941"
+  integrity sha512-NNTyyolSmKJicgxtoWZ/hoy2Rw56WIoWCFxgnBkXqDgi9qPKMwZs2Nx2b6SHLJvCiWWhZhWr5V46CFPo3PSPag==
+  dependencies:
+    eslint-config-xo-space "^0.35.0"
+    eslint-plugin-mocha "^10.5.0"
+    eslint-plugin-n "^15.1.0"
+    eslint-plugin-unicorn "^48.0.1"
+
+eslint-config-prettier@^9.0.0:
+  version "9.1.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
+  integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
 
-eslint-config-xo@^0.35.0:
+eslint-config-xo-space@^0.35.0:
   version "0.35.0"
-  resolved "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.35.0.tgz#8b5afca244c44129c32386c28602f973ad5cb762"
-  integrity sha512-+WyZTLWUJlvExFrBU/Ldw8AB/S0d3x+26JQdBWbcqig2ZaWh0zinYcHok+ET4IoPaEcRRf3FE9kjItNVjBwnAg==
+  resolved "https://registry.yarnpkg.com/eslint-config-xo-space/-/eslint-config-xo-space-0.35.0.tgz#fdc2741c601a011e3ba185f07e2e78b6eed9d3dc"
+  integrity sha512-+79iVcoLi3PvGcjqYDpSPzbLfqYpNcMlhsCBRsnmDoHAn4npJG6YxmHpelQKpXM7v/EeZTUKb4e1xotWlei8KA==
   dependencies:
-    confusing-browser-globals "1.0.10"
+    eslint-config-xo "^0.44.0"
 
-eslint-config-xo@^0.38.0:
-  version "0.38.0"
-  resolved "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.38.0.tgz#50cbe676a90d5582e1bbf1de750286e7cf09378e"
-  integrity sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g==
+eslint-config-xo@^0.44.0:
+  version "0.44.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.44.0.tgz#b4a68da791ecfd329bc7e1f88f9edea3d4dca70c"
+  integrity sha512-YG4gdaor0mJJi8UBeRJqDPO42MedTWYMaUyucF5bhm2pi/HS98JIxfFQmTLuyj6hGpQlAazNfyVnn7JuDn+Sew==
   dependencies:
-    confusing-browser-globals "1.0.10"
+    confusing-browser-globals "1.0.11"
 
-eslint-plugin-es@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893"
-  integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==
+eslint-import-resolver-node@^0.3.9:
+  version "0.3.9"
+  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
+  integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
+  dependencies:
+    debug "^3.2.7"
+    is-core-module "^2.13.0"
+    resolve "^1.22.4"
+
+eslint-import-resolver-typescript@^3.6.3:
+  version "3.6.3"
+  resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz#bb8e388f6afc0f940ce5d2c5fd4a3d147f038d9e"
+  integrity sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==
+  dependencies:
+    "@nolyfill/is-core-module" "1.0.39"
+    debug "^4.3.5"
+    enhanced-resolve "^5.15.0"
+    eslint-module-utils "^2.8.1"
+    fast-glob "^3.3.2"
+    get-tsconfig "^4.7.5"
+    is-bun-module "^1.0.2"
+    is-glob "^4.0.3"
+
+eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1:
+  version "2.12.0"
+  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b"
+  integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==
+  dependencies:
+    debug "^3.2.7"
+
+eslint-plugin-es@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9"
+  integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==
   dependencies:
     eslint-utils "^2.0.0"
     regexpp "^3.0.0"
 
-eslint-plugin-mocha@^9.0.0:
-  version "9.0.0"
-  resolved "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz#b4457d066941eecb070dc06ed301c527d9c61b60"
-  integrity sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==
+eslint-plugin-import@^2.31.0:
+  version "2.31.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7"
+  integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==
+  dependencies:
+    "@rtsao/scc" "^1.1.0"
+    array-includes "^3.1.8"
+    array.prototype.findlastindex "^1.2.5"
+    array.prototype.flat "^1.3.2"
+    array.prototype.flatmap "^1.3.2"
+    debug "^3.2.7"
+    doctrine "^2.1.0"
+    eslint-import-resolver-node "^0.3.9"
+    eslint-module-utils "^2.12.0"
+    hasown "^2.0.2"
+    is-core-module "^2.15.1"
+    is-glob "^4.0.3"
+    minimatch "^3.1.2"
+    object.fromentries "^2.0.8"
+    object.groupby "^1.0.3"
+    object.values "^1.2.0"
+    semver "^6.3.1"
+    string.prototype.trimend "^1.0.8"
+    tsconfig-paths "^3.15.0"
+
+eslint-plugin-mocha@^10.5.0:
+  version "10.5.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz#0aca8d709e7cddef566e0dc252f6b02e307a2b7e"
+  integrity sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw==
   dependencies:
     eslint-utils "^3.0.0"
-    ramda "^0.27.1"
+    globals "^13.24.0"
+    rambda "^7.4.0"
 
-eslint-plugin-node@^11.1.0:
-  version "11.1.0"
-  resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d"
-  integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==
+eslint-plugin-n@^15, eslint-plugin-n@^15.1.0:
+  version "15.7.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz#e29221d8f5174f84d18f2eb94765f2eeea033b90"
+  integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==
   dependencies:
-    eslint-plugin-es "^3.0.0"
-    eslint-utils "^2.0.0"
+    builtins "^5.0.1"
+    eslint-plugin-es "^4.1.0"
+    eslint-utils "^3.0.0"
     ignore "^5.1.1"
-    minimatch "^3.0.4"
-    resolve "^1.10.1"
-    semver "^6.1.0"
+    is-core-module "^2.11.0"
+    minimatch "^3.1.2"
+    resolve "^1.22.1"
+    semver "^7.3.8"
+
+eslint-plugin-perfectionist@^2.11.0:
+  version "2.11.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.11.0.tgz#d5cc32e0d12b649357ca5b104a105793956759ba"
+  integrity sha512-XrtBtiu5rbQv88gl+1e2RQud9te9luYNvKIgM9emttQ2zutHPzY/AQUucwxscDKV4qlTkvLTxjOFvxqeDpPorw==
+  dependencies:
+    "@typescript-eslint/utils" "^6.13.0 || ^7.0.0"
+    minimatch "^9.0.3"
+    natural-compare-lite "^1.4.0"
 
-eslint-plugin-unicorn@^36.0.0:
-  version "36.0.0"
-  resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-36.0.0.tgz#db50e1426839e401d33c5a279f49d4a5bbb640d8"
-  integrity sha512-xxN2vSctGWnDW6aLElm/LKIwcrmk6mdiEcW55Uv5krcrVcIFSWMmEgc/hwpemYfZacKZ5npFERGNz4aThsp1AA==
+eslint-plugin-unicorn@^48.0.1:
+  version "48.0.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz#a6573bc1687ae8db7121fdd8f92394b6549a6959"
+  integrity sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==
   dependencies:
-    "@babel/helper-validator-identifier" "^7.14.9"
-    ci-info "^3.2.0"
+    "@babel/helper-validator-identifier" "^7.22.5"
+    "@eslint-community/eslint-utils" "^4.4.0"
+    ci-info "^3.8.0"
     clean-regexp "^1.0.0"
-    eslint-template-visitor "^2.3.2"
-    eslint-utils "^3.0.0"
-    is-builtin-module "^3.1.0"
+    esquery "^1.5.0"
+    indent-string "^4.0.0"
+    is-builtin-module "^3.2.1"
+    jsesc "^3.0.2"
     lodash "^4.17.21"
     pluralize "^8.0.0"
     read-pkg-up "^7.0.1"
-    regexp-tree "^0.1.23"
-    safe-regex "^2.1.1"
-    semver "^7.3.5"
+    regexp-tree "^0.1.27"
+    regjsparser "^0.10.0"
+    semver "^7.5.4"
+    strip-indent "^3.0.0"
 
-eslint-scope@^5.1.1:
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
-  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+eslint-scope@^7.2.2:
+  version "7.2.2"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+  integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
   dependencies:
     esrecurse "^4.3.0"
-    estraverse "^4.1.1"
-
-eslint-template-visitor@^2.3.2:
-  version "2.3.2"
-  resolved "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz#b52f96ff311e773a345d79053ccc78275bbc463d"
-  integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==
-  dependencies:
-    "@babel/core" "^7.12.16"
-    "@babel/eslint-parser" "^7.12.16"
-    eslint-visitor-keys "^2.0.0"
-    esquery "^1.3.1"
-    multimap "^1.1.0"
+    estraverse "^5.2.0"
 
-eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+eslint-utils@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
   integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
@@ -2572,85 +3938,88 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0:
 
 eslint-utils@^3.0.0:
   version "3.0.0"
-  resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
+  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
   integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
   dependencies:
     eslint-visitor-keys "^2.0.0"
 
-eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+eslint-visitor-keys@^1.1.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
   integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
 
-eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
+eslint-visitor-keys@^2.0.0:
   version "2.1.0"
-  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
   integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
 
-eslint@^7.32.0:
-  version "7.32.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
-  integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
-  dependencies:
-    "@babel/code-frame" "7.12.11"
-    "@eslint/eslintrc" "^0.4.3"
-    "@humanwhocodes/config-array" "^0.5.0"
-    ajv "^6.10.0"
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+  version "3.4.3"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint@^8.57.1:
+  version "8.57.1"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9"
+  integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
+  dependencies:
+    "@eslint-community/eslint-utils" "^4.2.0"
+    "@eslint-community/regexpp" "^4.6.1"
+    "@eslint/eslintrc" "^2.1.4"
+    "@eslint/js" "8.57.1"
+    "@humanwhocodes/config-array" "^0.13.0"
+    "@humanwhocodes/module-importer" "^1.0.1"
+    "@nodelib/fs.walk" "^1.2.8"
+    "@ungap/structured-clone" "^1.2.0"
+    ajv "^6.12.4"
     chalk "^4.0.0"
     cross-spawn "^7.0.2"
-    debug "^4.0.1"
+    debug "^4.3.2"
     doctrine "^3.0.0"
-    enquirer "^2.3.5"
     escape-string-regexp "^4.0.0"
-    eslint-scope "^5.1.1"
-    eslint-utils "^2.1.0"
-    eslint-visitor-keys "^2.0.0"
-    espree "^7.3.1"
-    esquery "^1.4.0"
+    eslint-scope "^7.2.2"
+    eslint-visitor-keys "^3.4.3"
+    espree "^9.6.1"
+    esquery "^1.4.2"
     esutils "^2.0.2"
     fast-deep-equal "^3.1.3"
     file-entry-cache "^6.0.1"
-    functional-red-black-tree "^1.0.1"
-    glob-parent "^5.1.2"
-    globals "^13.6.0"
-    ignore "^4.0.6"
-    import-fresh "^3.0.0"
+    find-up "^5.0.0"
+    glob-parent "^6.0.2"
+    globals "^13.19.0"
+    graphemer "^1.4.0"
+    ignore "^5.2.0"
     imurmurhash "^0.1.4"
     is-glob "^4.0.0"
-    js-yaml "^3.13.1"
+    is-path-inside "^3.0.3"
+    js-yaml "^4.1.0"
     json-stable-stringify-without-jsonify "^1.0.1"
     levn "^0.4.1"
     lodash.merge "^4.6.2"
-    minimatch "^3.0.4"
+    minimatch "^3.1.2"
     natural-compare "^1.4.0"
-    optionator "^0.9.1"
-    progress "^2.0.0"
-    regexpp "^3.1.0"
-    semver "^7.2.1"
-    strip-ansi "^6.0.0"
-    strip-json-comments "^3.1.0"
-    table "^6.0.9"
+    optionator "^0.9.3"
+    strip-ansi "^6.0.1"
     text-table "^0.2.0"
-    v8-compile-cache "^2.0.3"
 
-espree@^7.3.0, espree@^7.3.1:
-  version "7.3.1"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
-  integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+espree@^9.6.0, espree@^9.6.1:
+  version "9.6.1"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+  integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
   dependencies:
-    acorn "^7.4.0"
-    acorn-jsx "^5.3.1"
-    eslint-visitor-keys "^1.3.0"
+    acorn "^8.9.0"
+    acorn-jsx "^5.3.2"
+    eslint-visitor-keys "^3.4.1"
 
 esprima@^4.0.0, esprima@~4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
   integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
 
-esquery@^1.3.1, esquery@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
-  integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+esquery@^1.4.2, esquery@^1.5.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
+  integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
   dependencies:
     estraverse "^5.1.0"
 
@@ -2661,151 +4030,54 @@ esrecurse@^4.3.0:
   dependencies:
     estraverse "^5.2.0"
 
-estraverse@^4.1.1:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-  integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
-
 estraverse@^5.1.0, estraverse@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
-  integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
 
 esutils@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-  integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
-
-event-stream@=3.3.4:
-  version "3.3.4"
-  resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
-  integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
-  dependencies:
-    duplexer "~0.1.1"
-    from "~0"
-    map-stream "~0.1.0"
-    pause-stream "0.0.11"
-    split "0.3"
-    stream-combiner "~0.0.4"
-    through "~2.3.1"
-
-eventemitter3@^4.0.4:
-  version "4.0.7"
-  resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
-  integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-
-events@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-  integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
 
-execa@^0.10.0:
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
-  integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
-  dependencies:
-    cross-spawn "^6.0.0"
-    get-stream "^3.0.0"
-    is-stream "^1.1.0"
-    npm-run-path "^2.0.0"
-    p-finally "^1.0.0"
-    signal-exit "^3.0.0"
-    strip-eof "^1.0.0"
-
-execa@^0.11.0:
-  version "0.11.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-0.11.0.tgz#0b3c71daf9b9159c252a863cd981af1b4410d97a"
-  integrity sha512-k5AR22vCt1DcfeiRixW46U5tMLtBg44ssdJM9PiXw3D8Bn5qyxFCSnKY/eR22y+ctFDGPqafpaXg2G4Emyua4A==
-  dependencies:
-    cross-spawn "^6.0.0"
-    get-stream "^4.0.0"
-    is-stream "^1.1.0"
-    npm-run-path "^2.0.0"
-    p-finally "^1.0.0"
-    signal-exit "^3.0.0"
-    strip-eof "^1.0.0"
-
-execa@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
-  integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
-  dependencies:
-    cross-spawn "^7.0.0"
-    get-stream "^5.0.0"
-    human-signals "^1.1.1"
-    is-stream "^2.0.0"
-    merge-stream "^2.0.0"
-    npm-run-path "^4.0.0"
-    onetime "^5.1.0"
-    signal-exit "^3.0.2"
-    strip-final-newline "^2.0.0"
+eventemitter3@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
+  integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
 
-execa@^5.0.0:
-  version "5.1.1"
-  resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
-  integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+execa@~8.0.1:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
+  integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
   dependencies:
     cross-spawn "^7.0.3"
-    get-stream "^6.0.0"
-    human-signals "^2.1.0"
-    is-stream "^2.0.0"
+    get-stream "^8.0.1"
+    human-signals "^5.0.0"
+    is-stream "^3.0.0"
     merge-stream "^2.0.0"
-    npm-run-path "^4.0.1"
-    onetime "^5.1.2"
-    signal-exit "^3.0.3"
-    strip-final-newline "^2.0.0"
+    npm-run-path "^5.1.0"
+    onetime "^6.0.0"
+    signal-exit "^4.1.0"
+    strip-final-newline "^3.0.0"
 
-external-editor@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
-  integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
+external-editor@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+  integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
   dependencies:
     chardet "^0.7.0"
     iconv-lite "^0.4.24"
     tmp "^0.0.33"
 
-extract-stack@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-1.0.0.tgz#b97acaf9441eea2332529624b732fc5a1c8165fa"
-  integrity sha1-uXrK+UQe6iMyUpYktzL8WhyBZfo=
-
-fancy-test@^1.4.10:
-  version "1.4.10"
-  resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-1.4.10.tgz#310be93d4aa45d788bce56a573ae4d1b92b2e1a0"
-  integrity sha512-AaUX6wKS7D5OP2YK2q5G7c8PGx2lgoyLUD7Bbg8z323sb9aebBqzb9UN6phzI73UgO/ViihmNfOxF3kdfZLhew==
-  dependencies:
-    "@types/chai" "*"
-    "@types/lodash" "*"
-    "@types/node" "*"
-    "@types/sinon" "*"
-    lodash "^4.17.13"
-    mock-stdin "^1.0.0"
-    nock "^13.0.0"
-    stdout-stderr "^0.1.9"
-
-fancy-test@^2.0.11:
-  version "2.0.12"
-  resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-2.0.12.tgz#a93cd92ffc23f70b069c39f19940d34f64c6ca67"
-  integrity sha512-S7qVQNaViLTMzn71huZvrUCV59ldq+enQ1EQOkdNbl4q4Om97gwqbYKvZoglsnzCWRRFaFP+qHynpdqaLdiZqg==
-  dependencies:
-    "@types/chai" "*"
-    "@types/lodash" "*"
-    "@types/node" "*"
-    "@types/sinon" "*"
-    lodash "^4.17.13"
-    mock-stdin "^1.0.0"
-    nock "^13.3.0"
-    stdout-stderr "^0.1.9"
-
 fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
   integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
 
-fast-glob@^3.2.9:
-  version "3.2.11"
-  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
-  integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+  integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
   dependencies:
     "@nodelib/fs.stat" "^2.0.2"
     "@nodelib/fs.walk" "^1.2.3"
@@ -2814,40 +4086,45 @@ fast-glob@^3.2.9:
     micromatch "^4.0.4"
 
 fast-json-stable-stringify@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
-  integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
 
 fast-levenshtein@^2.0.6:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-  integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+  integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
 fast-levenshtein@^3.0.0:
   version "3.0.0"
-  resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912"
+  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912"
   integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==
   dependencies:
     fastest-levenshtein "^1.0.7"
 
-fastest-levenshtein@^1.0.7:
-  version "1.0.12"
-  resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
-  integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
+fast-uri@^3.0.1:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.2.tgz#d78b298cf70fd3b752fd951175a3da6a7b48f024"
+  integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==
 
-fastq@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2"
-  integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==
+fast-xml-parser@4.4.1:
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f"
+  integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==
   dependencies:
-    reusify "^1.0.0"
+    strnum "^1.0.5"
 
-figures@^3.0.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
-  integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+fastest-levenshtein@^1.0.7:
+  version "1.0.16"
+  resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
+  integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
+
+fastq@^1.6.0:
+  version "1.17.1"
+  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+  integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
   dependencies:
-    escape-string-regexp "^1.0.5"
+    reusify "^1.0.4"
 
 file-entry-cache@^6.0.1:
   version "6.0.1"
@@ -2856,49 +4133,28 @@ file-entry-cache@^6.0.1:
   dependencies:
     flat-cache "^3.0.4"
 
-filelist@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb"
-  integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==
+filelist@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
+  integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
   dependencies:
-    minimatch "^3.0.4"
+    minimatch "^5.0.1"
 
-fill-range@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
-  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+fill-range@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+  integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
   dependencies:
     to-regex-range "^5.0.1"
 
-find-up@5.0.0, find-up@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
-  integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
-  dependencies:
-    locate-path "^6.0.0"
-    path-exists "^4.0.0"
-
-find-up@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
-  integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
-  dependencies:
-    path-exists "^2.0.0"
-    pinkie-promise "^2.0.0"
-
-find-up@^2.0.0, find-up@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
-  integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
-  dependencies:
-    locate-path "^2.0.0"
-
-find-up@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
-  integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+find-cache-dir@^3.2.0:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
+  integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
   dependencies:
-    locate-path "^3.0.0"
+    commondir "^1.0.1"
+    make-dir "^3.0.2"
+    pkg-dir "^4.1.0"
 
 find-up@^4.0.0, find-up@^4.1.0:
   version "4.1.0"
@@ -2908,13 +4164,22 @@ find-up@^4.0.0, find-up@^4.1.0:
     locate-path "^5.0.0"
     path-exists "^4.0.0"
 
-find-yarn-workspace-root2@1.2.16:
-  version "1.2.16"
-  resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9"
-  integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==
+find-up@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+  integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
   dependencies:
-    micromatch "^4.0.2"
-    pkg-dir "^4.2.0"
+    locate-path "^6.0.0"
+    path-exists "^4.0.0"
+
+find-up@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb"
+  integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==
+  dependencies:
+    locate-path "^7.2.0"
+    path-exists "^5.0.0"
+    unicorn-magic "^0.1.0"
 
 find-yarn-workspace-root@^2.0.0:
   version "2.0.0"
@@ -2923,19 +4188,13 @@ find-yarn-workspace-root@^2.0.0:
   dependencies:
     micromatch "^4.0.2"
 
-first-chunk-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
-  integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=
-  dependencies:
-    readable-stream "^2.0.2"
-
 flat-cache@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
-  integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
+  integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
   dependencies:
-    flatted "^3.1.0"
+    flatted "^3.2.9"
+    keyv "^4.5.3"
     rimraf "^3.0.2"
 
 flat@^5.0.2:
@@ -2943,31 +4202,35 @@ flat@^5.0.2:
   resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
   integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
 
-flatted@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067"
-  integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==
+flatted@^3.2.9:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
+  integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
 
 for-each@^0.3.3:
   version "0.3.3"
   resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
   integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
   dependencies:
-    is-callable "^1.1.3"
+    is-callable "^1.1.3"
+
+foreground-child@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53"
+  integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==
+  dependencies:
+    cross-spawn "^7.0.0"
+    signal-exit "^3.0.2"
 
-from@~0:
-  version "0.1.7"
-  resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
-  integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
+form-data-encoder@^2.1.2:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5"
+  integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==
 
-fs-extra@^7.0.0, fs-extra@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
-  integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
-  dependencies:
-    graceful-fs "^4.1.2"
-    jsonfile "^4.0.0"
-    universalify "^0.1.0"
+fromentries@^1.2.0:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
+  integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==
 
 fs-extra@^8.1:
   version "8.1.0"
@@ -2978,91 +4241,39 @@ fs-extra@^8.1:
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
-fs-extra@^9.0.1, fs-extra@^9.1.0:
-  version "9.1.0"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
-  integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
-  dependencies:
-    at-least-node "^1.0.0"
-    graceful-fs "^4.2.0"
-    jsonfile "^6.0.1"
-    universalify "^2.0.0"
-
-fs-minipass@^2.0.0, fs-minipass@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
-  integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
-  dependencies:
-    minipass "^3.0.0"
-
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+  integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
 fsevents@~2.3.2:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
-  integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
 
-function-bind@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-  integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function-bind@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+  integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
 
-function.prototype.name@^1.1.5:
-  version "1.1.5"
-  resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
-  integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
+function.prototype.name@^1.1.6:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
+  integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
   dependencies:
     call-bind "^1.0.2"
-    define-properties "^1.1.3"
-    es-abstract "^1.19.0"
-    functions-have-names "^1.2.2"
-
-functional-red-black-tree@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
-  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+    define-properties "^1.2.0"
+    es-abstract "^1.22.1"
+    functions-have-names "^1.2.3"
 
-functions-have-names@^1.2.2:
+functions-have-names@^1.2.3:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
   integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
 
-gauge@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395"
-  integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==
-  dependencies:
-    aproba "^1.0.3 || ^2.0.0"
-    color-support "^1.1.2"
-    console-control-strings "^1.0.0"
-    has-unicode "^2.0.1"
-    object-assign "^4.1.1"
-    signal-exit "^3.0.0"
-    string-width "^4.2.3"
-    strip-ansi "^6.0.1"
-    wide-align "^1.1.2"
-
-gauge@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8"
-  integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==
-  dependencies:
-    ansi-regex "^5.0.1"
-    aproba "^1.0.3 || ^2.0.0"
-    color-support "^1.1.2"
-    console-control-strings "^1.0.0"
-    has-unicode "^2.0.1"
-    signal-exit "^3.0.0"
-    string-width "^4.2.3"
-    strip-ansi "^6.0.1"
-    wide-align "^1.1.2"
-
 gensync@^1.0.0-beta.2:
   version "1.0.0-beta.2"
-  resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
   integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
 
 get-caller-file@^2.0.1, get-caller-file@^2.0.5:
@@ -3070,151 +4281,147 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
   integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
 
-get-func-name@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
-  integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
+get-east-asian-width@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e"
+  integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==
 
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
-  integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
+get-func-name@^2.0.1, get-func-name@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
+  integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+  integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
   dependencies:
-    function-bind "^1.1.1"
-    has "^1.0.3"
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+    has-proto "^1.0.1"
     has-symbols "^1.0.3"
+    hasown "^2.0.0"
 
 get-package-type@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
   integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
 
-get-pkg-repo@^1.0.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
-  integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0=
-  dependencies:
-    hosted-git-info "^2.1.4"
-    meow "^3.3.0"
-    normalize-package-data "^2.3.0"
-    parse-github-repo-url "^1.3.0"
-    through2 "^2.0.0"
-
-get-stdin@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
-  integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-
-get-stream@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-  integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
-
-get-stream@^4.0.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
-  integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
-  dependencies:
-    pump "^3.0.0"
-
-get-stream@^5.0.0, get-stream@^5.1.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
-  integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
-  dependencies:
-    pump "^3.0.0"
+get-stdin@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575"
+  integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==
 
-get-stream@^6.0.0:
+get-stream@^6.0.1:
   version "6.0.1"
-  resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
   integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
 
-get-symbol-description@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
-  integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
-  dependencies:
-    call-bind "^1.0.2"
-    get-intrinsic "^1.1.1"
+get-stream@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
+  integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
 
-git-raw-commits@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5"
-  integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==
+get-symbol-description@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
+  integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
   dependencies:
-    dargs "^4.0.1"
-    lodash.template "^4.0.2"
-    meow "^4.0.0"
-    split2 "^2.0.0"
-    through2 "^2.0.0"
+    call-bind "^1.0.5"
+    es-errors "^1.3.0"
+    get-intrinsic "^1.2.4"
 
-git-remote-origin-url@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f"
-  integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=
+get-tsconfig@^4.7.5:
+  version "4.8.1"
+  resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471"
+  integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==
   dependencies:
-    gitconfiglocal "^1.0.0"
-    pify "^2.3.0"
+    resolve-pkg-maps "^1.0.0"
 
-git-semver-tags@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780"
-  integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==
-  dependencies:
-    meow "^8.0.0"
-    semver "^6.0.0"
+git-hooks-list@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-3.1.0.tgz#386dc531dcc17474cf094743ff30987a3d3e70fc"
+  integrity sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==
 
-gitconfiglocal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b"
-  integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=
+git-raw-commits@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285"
+  integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==
   dependencies:
-    ini "^1.3.2"
+    dargs "^8.0.0"
+    meow "^12.0.1"
+    split2 "^4.0.0"
 
-github-slugger@^1.5.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d"
-  integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==
-
-github-username@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npmjs.org/github-username/-/github-username-6.0.0.tgz#d543eced7295102996cd8e4e19050ebdcbe60658"
-  integrity sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==
-  dependencies:
-    "@octokit/rest" "^18.0.6"
+github-slugger@^2:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a"
+  integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==
 
 glob-parent@^5.1.2, glob-parent@~5.1.2:
   version "5.1.2"
-  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
   integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
   dependencies:
     is-glob "^4.0.1"
 
-glob@7.2.0, glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
-  version "7.2.0"
-  resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
-  integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
+glob-parent@^6.0.2:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+  dependencies:
+    is-glob "^4.0.3"
+
+glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+  version "7.2.3"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
   dependencies:
     fs.realpath "^1.0.0"
     inflight "^1.0.4"
     inherits "2"
-    minimatch "^3.0.4"
+    minimatch "^3.1.1"
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
+glob@^8.1.0:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
+  integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^5.0.1"
+    once "^1.3.0"
+
+global-directory@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e"
+  integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==
+  dependencies:
+    ini "4.1.1"
+
 globals@^11.1.0:
   version "11.12.0"
-  resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
   integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
-globals@^13.6.0, globals@^13.9.0:
-  version "13.12.0"
-  resolved "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
-  integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
+globals@^13.19.0, globals@^13.24.0:
+  version "13.24.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+  integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
   dependencies:
     type-fest "^0.20.2"
 
-globby@^11.0.1, globby@^11.0.3, globby@^11.1.0:
+globalthis@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
+  integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
+  dependencies:
+    define-properties "^1.2.1"
+    gopd "^1.0.1"
+
+globby@^11.1.0:
   version "11.1.0"
   resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
   integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -3226,144 +4433,146 @@ globby@^11.0.1, globby@^11.0.3, globby@^11.1.0:
     merge2 "^1.4.1"
     slash "^3.0.0"
 
-got@^11:
-  version "11.8.5"
-  resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046"
-  integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==
-  dependencies:
-    "@sindresorhus/is" "^4.0.0"
-    "@szmarczak/http-timer" "^4.0.5"
-    "@types/cacheable-request" "^6.0.1"
-    "@types/responselike" "^1.0.0"
-    cacheable-lookup "^5.0.3"
-    cacheable-request "^7.0.2"
-    decompress-response "^6.0.0"
-    http2-wrapper "^1.0.0-beta.5.2"
-    lowercase-keys "^2.0.0"
-    p-cancelable "^2.0.0"
-    responselike "^2.0.0"
-
-graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6:
-  version "4.2.9"
-  resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
-  integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
-
-grouped-queue@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/grouped-queue/-/grouped-queue-2.0.0.tgz#a2c6713f2171e45db2c300a3a9d7c119d694dac8"
-  integrity sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==
-
-growl@1.10.5:
-  version "1.10.5"
-  resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
-  integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
-
-handlebars@^4.7.6:
-  version "4.7.7"
-  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
-  integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
+globby@^13.1.2:
+  version "13.2.2"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592"
+  integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==
   dependencies:
-    minimist "^1.2.5"
-    neo-async "^2.6.0"
-    source-map "^0.6.1"
-    wordwrap "^1.0.0"
-  optionalDependencies:
-    uglify-js "^3.1.4"
+    dir-glob "^3.0.1"
+    fast-glob "^3.3.0"
+    ignore "^5.2.4"
+    merge2 "^1.4.1"
+    slash "^4.0.0"
 
-hard-rejection@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
-  integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+gopd@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+  integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+  dependencies:
+    get-intrinsic "^1.1.3"
 
-has-ansi@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-  integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+got@^13:
+  version "13.0.0"
+  resolved "https://registry.yarnpkg.com/got/-/got-13.0.0.tgz#a2402862cef27a5d0d1b07c0fb25d12b58175422"
+  integrity sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==
   dependencies:
-    ansi-regex "^2.0.0"
+    "@sindresorhus/is" "^5.2.0"
+    "@szmarczak/http-timer" "^5.0.1"
+    cacheable-lookup "^7.0.0"
+    cacheable-request "^10.2.8"
+    decompress-response "^6.0.0"
+    form-data-encoder "^2.1.2"
+    get-stream "^6.0.1"
+    http2-wrapper "^2.1.10"
+    lowercase-keys "^3.0.0"
+    p-cancelable "^3.0.0"
+    responselike "^3.0.0"
+
+graceful-fs@4.2.10:
+  version "4.2.10"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
+  integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
+graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
+  version "4.2.11"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+graphemer@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+  integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
 
 has-bigints@^1.0.1, has-bigints@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
   integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
 
-has-flag@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
-  integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
-
 has-flag@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+  integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
 
 has-flag@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
-has-property-descriptors@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
-  integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+  integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
   dependencies:
-    get-intrinsic "^1.1.1"
+    es-define-property "^1.0.0"
+
+has-proto@^1.0.1, has-proto@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
+  integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
 
 has-symbols@^1.0.2, has-symbols@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
   integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
 
-has-tostringtag@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
-  integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+  integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
   dependencies:
-    has-symbols "^1.0.2"
+    has-symbols "^1.0.3"
 
-has-unicode@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-  integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+hasha@^5.0.0:
+  version "5.2.2"
+  resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1"
+  integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==
+  dependencies:
+    is-stream "^2.0.0"
+    type-fest "^0.8.0"
 
-has@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
-  integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+  integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
   dependencies:
-    function-bind "^1.1.1"
+    function-bind "^1.1.2"
 
-he@1.2.0:
+he@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
   integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
 
-heroku-client@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/heroku-client/-/heroku-client-3.1.0.tgz#7e3f6804d18a6ee9e3a774ff8bc9861b9b1a4725"
-  integrity sha512-UfGKwUm5duzzSVI8uUXlNAE1mus6uPxmZPji4vuG1ArV5DYL1rXsZShp0OoxraWdEwYoxCUrM6KGztC68x5EZQ==
+header-case@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063"
+  integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==
   dependencies:
-    is-retry-allowed "^1.0.0"
-    tunnel-agent "^0.6.0"
+    capital-case "^1.0.4"
+    tslib "^2.0.3"
 
 hosted-git-info@^2.1.4:
   version "2.8.9"
   resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
   integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
 
-hosted-git-info@^4.0.1:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961"
-  integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==
+hosted-git-info@^7.0.0:
+  version "7.0.2"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17"
+  integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==
   dependencies:
-    lru-cache "^6.0.0"
+    lru-cache "^10.0.1"
 
-http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
-  integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+html-escaper@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+  integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+
+http-cache-semantics@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
+  integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
 
-http-call@^5.2.2, http-call@^5.2.4:
+http-call@^5.2.2:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/http-call/-/http-call-5.3.0.tgz#4ded815b13f423de176eb0942d69c43b25b148db"
   integrity sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==
@@ -3375,47 +4584,23 @@ http-call@^5.2.2, http-call@^5.2.4:
     parse-json "^4.0.0"
     tunnel-agent "^0.6.0"
 
-http-proxy-agent@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
-  integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
-  dependencies:
-    "@tootallnate/once" "1"
-    agent-base "6"
-    debug "4"
-
-http2-wrapper@^1.0.0-beta.5.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
-  integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
+http2-wrapper@^2.1.10:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a"
+  integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==
   dependencies:
     quick-lru "^5.1.1"
-    resolve-alpn "^1.0.0"
+    resolve-alpn "^1.2.0"
 
-https-proxy-agent@^5.0.0:
+human-signals@^5.0.0:
   version "5.0.0"
-  resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
-  integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
-  dependencies:
-    agent-base "6"
-    debug "4"
-
-human-signals@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
-  integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
-
-human-signals@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
-  integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
+  integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
 
-humanize-ms@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
-  integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=
-  dependencies:
-    ms "^2.0.0"
+husky@^9.1.7:
+  version "9.1.7"
+  resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d"
+  integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==
 
 hyperlinker@^1.0.0:
   version "1.0.0"
@@ -3429,144 +4614,88 @@ iconv-lite@^0.4.24:
   dependencies:
     safer-buffer ">= 2.1.2 < 3"
 
-iconv-lite@^0.6.2:
-  version "0.6.3"
-  resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
-  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3.0.0"
-
-ieee754@1.1.13:
-  version "1.1.13"
-  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
-  integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
-
-ieee754@^1.1.13, ieee754@^1.1.4:
-  version "1.2.1"
-  resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
-  integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
-ignore-walk@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3"
-  integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==
-  dependencies:
-    minimatch "^3.0.4"
-
-ignore@^4.0.6:
-  version "4.0.6"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
-  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
-ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
-  integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4:
+  version "5.3.2"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+  integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
 
-import-fresh@^3.0.0, import-fresh@^3.2.1:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e"
-  integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==
+import-fresh@^3.2.1, import-fresh@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
   dependencies:
     parent-module "^1.0.0"
     resolve-from "^4.0.0"
 
+import-meta-resolve@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706"
+  integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==
+
 imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-indent-string@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
-  integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
-  dependencies:
-    repeating "^2.0.0"
-
-indent-string@^3.0.0, indent-string@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
-  integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+  integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
 
 indent-string@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
   integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
 
-infer-owner@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
-  integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
-
 inflight@^1.0.4:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+  integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
   dependencies:
     once "^1.3.0"
     wrappy "1"
 
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@2:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
 
-ini@^1.3.2:
-  version "1.3.7"
-  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
-  integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
+ini@4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1"
+  integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==
 
-inquirer@^8.0.0:
-  version "8.2.0"
-  resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a"
-  integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==
-  dependencies:
-    ansi-escapes "^4.2.1"
-    chalk "^4.1.1"
-    cli-cursor "^3.1.0"
-    cli-width "^3.0.0"
-    external-editor "^3.0.3"
-    figures "^3.0.0"
-    lodash "^4.17.21"
-    mute-stream "0.0.8"
-    ora "^5.4.1"
-    run-async "^2.4.0"
-    rxjs "^7.2.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-    through "^2.3.6"
+ini@^1.3.4:
+  version "1.3.8"
+  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+  integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
 
-internal-slot@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
-  integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+internal-slot@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
+  integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
   dependencies:
-    get-intrinsic "^1.1.0"
-    has "^1.0.3"
+    es-errors "^1.3.0"
+    hasown "^2.0.0"
     side-channel "^1.0.4"
 
 interpret@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
-  integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
-
-ip@^1.1.5:
-  version "1.1.5"
-  resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
-  integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+  integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
 
-is-arguments@^1.0.4:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
-  integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+is-array-buffer@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
+  integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
   dependencies:
     call-bind "^1.0.2"
-    has-tostringtag "^1.0.0"
+    get-intrinsic "^1.2.1"
 
 is-arrayish@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-  integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+  integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-arrayish@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+  integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
 
 is-bigint@^1.0.1:
   version "1.0.4"
@@ -3590,24 +4719,38 @@ is-boolean-object@^1.1.0:
     call-bind "^1.0.2"
     has-tostringtag "^1.0.0"
 
-is-builtin-module@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00"
-  integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==
+is-builtin-module@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169"
+  integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==
+  dependencies:
+    builtin-modules "^3.3.0"
+
+is-bun-module@^1.0.2:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.2.1.tgz#495e706f42e29f086fd5fe1ac3c51f106062b9fc"
+  integrity sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==
   dependencies:
-    builtin-modules "^3.0.0"
+    semver "^7.6.3"
 
-is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.6:
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
   integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
 
-is-core-module@^2.2.0, is-core-module@^2.5.0:
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
-  integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==
+is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.15.1:
+  version "2.15.1"
+  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
+  integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
   dependencies:
-    has "^1.0.3"
+    hasown "^2.0.2"
+
+is-data-view@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f"
+  integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
+  dependencies:
+    is-typed-array "^1.1.13"
 
 is-date-object@^1.0.1:
   version "1.0.5"
@@ -3617,67 +4760,43 @@ is-date-object@^1.0.1:
     has-tostringtag "^1.0.0"
 
 is-docker@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b"
-  integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+  integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
 
 is-extglob@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-finite@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
-  integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
-  dependencies:
-    number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
-  integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
-  dependencies:
-    number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
 
 is-fullwidth-code-point@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
   integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
 
-is-generator-function@^1.0.7:
-  version "1.0.10"
-  resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
-  integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+is-fullwidth-code-point@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
+  integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
+
+is-fullwidth-code-point@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704"
+  integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==
   dependencies:
-    has-tostringtag "^1.0.0"
+    get-east-asian-width "^1.0.0"
 
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
   integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
   dependencies:
     is-extglob "^2.1.1"
 
-is-interactive@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
-  integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
-
-is-lambda@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
-  integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=
-
-is-negative-zero@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
-  integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+is-negative-zero@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
+  integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
 
 is-number-object@^1.0.4:
   version "1.0.7"
@@ -3696,25 +4815,20 @@ is-obj@^2.0.0:
   resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
   integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
 
-is-object@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
-  integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA=
-
-is-plain-obj@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-  integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+is-path-inside@^3.0.3:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+  integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
 
-is-plain-obj@^2.0.0, is-plain-obj@^2.1.0:
+is-plain-obj@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
   integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
 
-is-plain-object@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
-  integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+is-plain-obj@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
+  integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
 
 is-regex@^1.1.4:
   version "1.1.4"
@@ -3724,34 +4838,27 @@ is-regex@^1.1.4:
     call-bind "^1.0.2"
     has-tostringtag "^1.0.0"
 
-is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0:
+is-retry-allowed@^1.1.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
   integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
 
-is-scoped@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/is-scoped/-/is-scoped-2.1.0.tgz#fef0713772658bdf5bee418608267ddae6d3566d"
-  integrity sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ==
-  dependencies:
-    scoped-regex "^2.0.0"
-
-is-shared-array-buffer@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
-  integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
+  integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
   dependencies:
-    call-bind "^1.0.2"
-
-is-stream@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+    call-bind "^1.0.7"
 
 is-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
-  integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+  integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-stream@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+  integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
 
 is-string@^1.0.5, is-string@^1.0.7:
   version "1.0.7"
@@ -3767,39 +4874,30 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
   dependencies:
     has-symbols "^1.0.2"
 
-is-text-path@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
-  integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=
+is-text-path@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636"
+  integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==
   dependencies:
-    text-extensions "^1.0.0"
+    text-extensions "^2.0.0"
 
-is-typed-array@^1.1.3, is-typed-array@^1.1.9:
-  version "1.1.9"
-  resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67"
-  integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==
+is-typed-array@^1.1.13:
+  version "1.1.13"
+  resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
+  integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
   dependencies:
-    available-typed-arrays "^1.0.5"
-    call-bind "^1.0.2"
-    es-abstract "^1.20.0"
-    for-each "^0.3.3"
-    has-tostringtag "^1.0.0"
+    which-typed-array "^1.1.14"
 
 is-typedarray@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+  integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
 
 is-unicode-supported@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
   integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
 
-is-utf8@^0.2.0, is-utf8@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-  integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
 is-weakref@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
@@ -3807,72 +4905,132 @@ is-weakref@^1.0.2:
   dependencies:
     call-bind "^1.0.2"
 
-is-wsl@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
-  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+is-windows@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
 
-is-wsl@^2.1.1, is-wsl@^2.2.0:
+is-wsl@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
   integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
   dependencies:
     is-docker "^2.0.0"
 
-isarray@^1.0.0, isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+isarray@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+  integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
+isexe@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756"
+  integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==
+
+istanbul-lib-hook@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6"
+  integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==
+  dependencies:
+    append-transform "^2.0.0"
+
+istanbul-lib-instrument@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
+  integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
+  dependencies:
+    "@babel/core" "^7.7.5"
+    "@istanbuljs/schema" "^0.1.2"
+    istanbul-lib-coverage "^3.0.0"
+    semver "^6.3.0"
+
+istanbul-lib-processinfo@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169"
+  integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==
+  dependencies:
+    archy "^1.0.0"
+    cross-spawn "^7.0.3"
+    istanbul-lib-coverage "^3.2.0"
+    p-map "^3.0.0"
+    rimraf "^3.0.0"
+    uuid "^8.3.2"
+
+istanbul-lib-report@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d"
+  integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==
+  dependencies:
+    istanbul-lib-coverage "^3.0.0"
+    make-dir "^4.0.0"
+    supports-color "^7.1.0"
 
-isbinaryfile@^4.0.10, isbinaryfile@^4.0.8:
-  version "4.0.10"
-  resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
-  integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==
+istanbul-lib-source-maps@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
+  integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
+  dependencies:
+    debug "^4.1.1"
+    istanbul-lib-coverage "^3.0.0"
+    source-map "^0.6.1"
 
-isexe@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+istanbul-reports@^3.0.2:
+  version "3.1.7"
+  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b"
+  integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==
+  dependencies:
+    html-escaper "^2.0.0"
+    istanbul-lib-report "^3.0.0"
 
 jake@^10.8.5:
-  version "10.8.5"
-  resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
-  integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==
+  version "10.9.2"
+  resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f"
+  integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==
   dependencies:
     async "^3.2.3"
     chalk "^4.0.2"
-    filelist "^1.0.1"
-    minimatch "^3.0.4"
+    filelist "^1.0.4"
+    minimatch "^3.1.2"
 
-jmespath@0.16.0:
-  version "0.16.0"
-  resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076"
-  integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==
+jiti@^2.4.1:
+  version "2.4.2"
+  resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560"
+  integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
 
 js-tokens@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
   integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
 
-js-yaml@4.1.0:
+js-yaml@^3.13.1, js-yaml@^3.14.1:
+  version "3.14.1"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+  integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^4.0.0"
+
+js-yaml@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
   integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
   dependencies:
     argparse "^2.0.1"
 
-js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1, js-yaml@^3.9.0:
-  version "3.14.1"
-  resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
-  integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
-  dependencies:
-    argparse "^1.0.7"
-    esprima "^4.0.0"
+jsesc@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
+  integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
 
-jsesc@^2.5.1:
-  version "2.5.2"
-  resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
-  integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@~0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+  integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
 
 json-buffer@3.0.1:
   version "3.0.1"
@@ -3884,9 +5042,9 @@ json-parse-better-errors@^1.0.1:
   resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
   integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
 
-json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
+json-parse-even-better-errors@^2.3.0:
   version "2.3.1"
-  resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+  resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
   integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
 
 json-schema-traverse@^0.4.1:
@@ -3896,74 +5054,50 @@ json-schema-traverse@^0.4.1:
 
 json-schema-traverse@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
   integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
 
 json-stable-stringify-without-jsonify@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
-  integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-json-stringify-nice@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67"
-  integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==
-
-json-stringify-safe@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-  integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+  integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
 
-json5@^2.1.2:
-  version "2.2.0"
-  resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
-  integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+json5@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+  integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
   dependencies:
-    minimist "^1.2.5"
+    minimist "^1.2.0"
+
+json5@^2.2.3:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+  integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
 
 jsonfile@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
-  integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
-jsonfile@^6.0.1:
-  version "6.1.0"
-  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
-  integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
-  dependencies:
-    universalify "^2.0.0"
+  integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
   optionalDependencies:
     graceful-fs "^4.1.6"
 
-jsonparse@^1.2.0, jsonparse@^1.3.1:
+jsonparse@^1.2.0:
   version "1.3.1"
-  resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
-  integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
-
-just-diff-apply@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-4.0.1.tgz#da89c5a4ccb14aa8873c70e2c3b6695cef45dab5"
-  integrity sha512-AKOkzB5P6FkfP21UlZVX/OPXx/sC2GagpLX9cBxqHqDuRjwmZ/AJRKSNrB9jHPpRW1W1ONs6gly1gW46t055nQ==
+  resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+  integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
 
-just-diff@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npmjs.org/just-diff/-/just-diff-5.0.1.tgz#db8fe1cfeea1156f2374bfb289826dca28e7e390"
-  integrity sha512-X00TokkRIDotUIf3EV4xUm6ELc/IkqhS/vPSHdWnsM5y0HoNMfEqrazizI7g78lpHvnRSRt/PFfKtRqJCOGIuQ==
+just-extend@^6.2.0:
+  version "6.2.0"
+  resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947"
+  integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==
 
-keyv@^4.0.0:
-  version "4.5.2"
-  resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56"
-  integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==
+keyv@^4.5.3:
+  version "4.5.4"
+  resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+  integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
   dependencies:
     json-buffer "3.0.1"
 
-kind-of@^6.0.3:
-  version "6.0.3"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
-  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
 levn@^0.4.1:
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -3972,57 +5106,43 @@ levn@^0.4.1:
     prelude-ls "^1.2.1"
     type-check "~0.4.0"
 
-lines-and-columns@^1.1.6:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
-  integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
-load-json-file@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
-  integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
-  dependencies:
-    graceful-fs "^4.1.2"
-    parse-json "^2.2.0"
-    pify "^2.0.0"
-    pinkie-promise "^2.0.0"
-    strip-bom "^2.0.0"
-
-load-json-file@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
-  integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
-  dependencies:
-    graceful-fs "^4.1.2"
-    parse-json "^4.0.0"
-    pify "^3.0.0"
-    strip-bom "^3.0.0"
-
-load-yaml-file@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d"
-  integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==
-  dependencies:
-    graceful-fs "^4.1.5"
-    js-yaml "^3.13.0"
-    pify "^4.0.1"
-    strip-bom "^3.0.0"
-
-locate-path@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
-  integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
-  dependencies:
-    p-locate "^2.0.0"
-    path-exists "^3.0.0"
+lilconfig@^3.1.3, lilconfig@~3.1.3:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
+  integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
 
-locate-path@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
-  integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
-  dependencies:
-    p-locate "^3.0.0"
-    path-exists "^3.0.0"
+lines-and-columns@^1.1.6:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+  integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+lint-staged@^15:
+  version "15.2.11"
+  resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.11.tgz#e88440982f4a4c1d55a9a7a839259ec3806bd81b"
+  integrity sha512-Ev6ivCTYRTGs9ychvpVw35m/bcNDuBN+mnTeObCL5h+boS5WzBEC6LHI4I9F/++sZm1m+J2LEiy0gxL/R9TBqQ==
+  dependencies:
+    chalk "~5.3.0"
+    commander "~12.1.0"
+    debug "~4.4.0"
+    execa "~8.0.1"
+    lilconfig "~3.1.3"
+    listr2 "~8.2.5"
+    micromatch "~4.0.8"
+    pidtree "~0.6.0"
+    string-argv "~0.3.2"
+    yaml "~2.6.1"
+
+listr2@~8.2.5:
+  version "8.2.5"
+  resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d"
+  integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==
+  dependencies:
+    cli-truncate "^4.0.0"
+    colorette "^2.0.20"
+    eventemitter3 "^5.0.1"
+    log-update "^6.1.0"
+    rfdc "^1.4.1"
+    wrap-ansi "^9.0.0"
 
 locate-path@^5.0.0:
   version "5.0.0"
@@ -4038,213 +5158,146 @@ locate-path@^6.0.0:
   dependencies:
     p-locate "^5.0.0"
 
-lodash._reinterpolate@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
-  integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+locate-path@^7.2.0:
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a"
+  integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==
+  dependencies:
+    p-locate "^6.0.0"
+
+lodash.camelcase@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+  integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
 
-lodash.ismatch@^4.4.0:
+lodash.flattendeep@^4.4.0:
   version "4.4.0"
-  resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37"
-  integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=
+  resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
+  integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==
+
+lodash.get@^4.4.2:
+  version "4.4.2"
+  resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+  integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
+
+lodash.isplainobject@^4.0.6:
+  version "4.0.6"
+  resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+  integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
+
+lodash.kebabcase@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
+  integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==
 
 lodash.merge@^4.6.2:
   version "4.6.2"
-  resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
   integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
 
-lodash.template@^4.0.2:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
-  integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
-  dependencies:
-    lodash._reinterpolate "^3.0.0"
-    lodash.templatesettings "^4.0.0"
+lodash.mergewith@^4.6.2:
+  version "4.6.2"
+  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
+  integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
 
-lodash.templatesettings@^4.0.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
-  integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
-  dependencies:
-    lodash._reinterpolate "^3.0.0"
+lodash.snakecase@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
+  integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==
 
-lodash.truncate@^4.4.2:
-  version "4.4.2"
-  resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
-  integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+lodash.startcase@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
+  integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==
+
+lodash.uniq@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+  integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
+
+lodash.upperfirst@^4.3.1:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce"
+  integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==
 
-lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4:
+lodash@^4.17.21:
   version "4.17.21"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
 
-log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0:
+log-symbols@^4.1.0:
   version "4.1.0"
-  resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
   integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
   dependencies:
     chalk "^4.1.0"
     is-unicode-supported "^0.1.0"
 
-loud-rejection@^1.0.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
-  integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+log-update@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4"
+  integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==
   dependencies:
-    currently-unhandled "^0.4.1"
-    signal-exit "^3.0.0"
+    ansi-escapes "^7.0.0"
+    cli-cursor "^5.0.0"
+    slice-ansi "^7.1.0"
+    strip-ansi "^7.1.0"
+    wrap-ansi "^9.0.0"
 
-loupe@^2.3.1:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.3.tgz#5a92027d54cfb6de4c327d3c3b705561d394d3c6"
-  integrity sha512-krIV4Cf1BIGIx2t1e6tucThhrBemUnIUjMtD2vN4mrMxnxpBvrcosBSpooqunBqP/hOEEV1w/Cr1YskGtqw5Jg==
+loupe@^2.3.6:
+  version "2.3.7"
+  resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697"
+  integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
   dependencies:
-    get-func-name "^2.0.0"
+    get-func-name "^2.0.1"
 
-lowercase-keys@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
-  integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-
-lru-cache@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
-  integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+lower-case@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+  integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
   dependencies:
-    yallist "^4.0.0"
+    tslib "^2.0.3"
 
-make-dir@^3.0.0:
+lowercase-keys@^3.0.0:
   version "3.0.0"
-  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801"
-  integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==
-  dependencies:
-    semver "^6.0.0"
-
-make-error@^1.1.1:
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
-  integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
-
-make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0:
-  version "9.1.0"
-  resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968"
-  integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==
-  dependencies:
-    agentkeepalive "^4.1.3"
-    cacache "^15.2.0"
-    http-cache-semantics "^4.1.0"
-    http-proxy-agent "^4.0.1"
-    https-proxy-agent "^5.0.0"
-    is-lambda "^1.0.1"
-    lru-cache "^6.0.0"
-    minipass "^3.1.3"
-    minipass-collect "^1.0.2"
-    minipass-fetch "^1.3.2"
-    minipass-flush "^1.0.5"
-    minipass-pipeline "^1.2.4"
-    negotiator "^0.6.2"
-    promise-retry "^2.0.1"
-    socks-proxy-agent "^6.0.0"
-    ssri "^8.0.0"
-
-manage-path@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/manage-path/-/manage-path-2.0.0.tgz#f4cf8457b926eeee2a83b173501414bc76eb9597"
-  integrity sha1-9M+EV7km7u4qg7FzUBQUvHbrlZc=
+  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2"
+  integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==
 
-map-obj@^1.0.0, map-obj@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
-  integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
-map-obj@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
-  integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
+lru-cache@^10.0.1:
+  version "10.4.3"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
+  integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
 
-map-obj@^4.0.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5"
-  integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==
+lru-cache@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+  integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+  dependencies:
+    yallist "^3.0.2"
 
-map-stream@~0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
-  integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=
+make-dir@^3.0.0, make-dir@^3.0.2:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+  integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+  dependencies:
+    semver "^6.0.0"
 
-"mem-fs-editor@^8.1.2 || ^9.0.0":
-  version "9.4.0"
-  resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz#0cc1cf61350e33c25fc364c97fb0551eb32b8c9b"
-  integrity sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g==
+make-dir@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
+  integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==
   dependencies:
-    binaryextensions "^4.16.0"
-    commondir "^1.0.1"
-    deep-extend "^0.6.0"
-    ejs "^3.1.6"
-    globby "^11.0.3"
-    isbinaryfile "^4.0.8"
-    minimatch "^3.0.4"
-    multimatch "^5.0.0"
-    normalize-path "^3.0.0"
-    textextensions "^5.13.0"
+    semver "^7.5.3"
 
-"mem-fs@^1.2.0 || ^2.0.0":
-  version "2.2.1"
-  resolved "https://registry.npmjs.org/mem-fs/-/mem-fs-2.2.1.tgz#c87bc8a53fb17971b129d4bcd59a9149fb78c5b1"
-  integrity sha512-yiAivd4xFOH/WXlUi6v/nKopBh1QLzwjFi36NK88cGt/PRXI8WeBASqY+YSjIVWvQTx3hR8zHKDBMV6hWmglNA==
-  dependencies:
-    "@types/node" "^15.6.1"
-    "@types/vinyl" "^2.0.4"
-    vinyl "^2.0.1"
-    vinyl-file "^3.0.0"
-
-meow@^3.3.0:
-  version "3.7.0"
-  resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
-  integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
-  dependencies:
-    camelcase-keys "^2.0.0"
-    decamelize "^1.1.2"
-    loud-rejection "^1.0.0"
-    map-obj "^1.0.1"
-    minimist "^1.1.3"
-    normalize-package-data "^2.3.4"
-    object-assign "^4.0.1"
-    read-pkg-up "^1.0.1"
-    redent "^1.0.0"
-    trim-newlines "^1.0.0"
-
-meow@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975"
-  integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==
-  dependencies:
-    camelcase-keys "^4.0.0"
-    decamelize-keys "^1.0.0"
-    loud-rejection "^1.0.0"
-    minimist "^1.1.3"
-    minimist-options "^3.0.1"
-    normalize-package-data "^2.3.4"
-    read-pkg-up "^3.0.0"
-    redent "^2.0.0"
-    trim-newlines "^2.0.0"
-
-meow@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.yarnpkg.com/meow/-/meow-8.0.0.tgz#1aa10ee61046719e334ffdc038bb5069250ec99a"
-  integrity sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg==
-  dependencies:
-    "@types/minimist" "^1.2.0"
-    camelcase-keys "^6.2.2"
-    decamelize-keys "^1.1.0"
-    hard-rejection "^2.1.0"
-    minimist-options "4.1.0"
-    normalize-package-data "^3.0.0"
-    read-pkg-up "^7.0.1"
-    redent "^3.0.0"
-    trim-newlines "^3.0.0"
-    type-fest "^0.18.0"
-    yargs-parser "^20.2.3"
+make-error@^1.1.1:
+  version "1.3.6"
+  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+  integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+
+meow@^12.0.1:
+  version "12.1.1"
+  resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6"
+  integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==
 
 merge-stream@^2.0.0:
   version "2.0.0"
@@ -4256,301 +5309,160 @@ merge2@^1.3.0, merge2@^1.4.1:
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
   integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 
-micromatch@^4.0.2, micromatch@^4.0.4:
-  version "4.0.4"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
-  integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@~4.0.8:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+  integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
   dependencies:
-    braces "^3.0.1"
-    picomatch "^2.2.3"
+    braces "^3.0.3"
+    picomatch "^2.3.1"
 
-mimic-fn@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
-  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+mimic-fn@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+  integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
 
-mimic-response@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
-  integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+mimic-function@^5.0.0:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076"
+  integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==
 
 mimic-response@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
   integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
 
+mimic-response@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f"
+  integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==
+
 min-indent@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
   integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
 
-minimatch@4.2.1:
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4"
-  integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==
+minimatch@9.0.3:
+  version "9.0.3"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
+  integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
   dependencies:
-    brace-expansion "^1.1.7"
+    brace-expansion "^2.0.1"
 
-minimatch@^3.0.4:
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
   version "3.1.2"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
   dependencies:
     brace-expansion "^1.1.7"
 
-minimist-options@4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
-  integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
-  dependencies:
-    arrify "^1.0.1"
-    is-plain-obj "^1.1.0"
-    kind-of "^6.0.3"
-
-minimist-options@^3.0.1:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954"
-  integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==
-  dependencies:
-    arrify "^1.0.1"
-    is-plain-obj "^1.1.0"
-
-minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.3, minimist@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
-  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-
-minipass-collect@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
-  integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
-  dependencies:
-    minipass "^3.0.0"
-
-minipass-fetch@^1.3.0, minipass-fetch@^1.3.2:
-  version "1.4.1"
-  resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6"
-  integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==
-  dependencies:
-    minipass "^3.1.0"
-    minipass-sized "^1.0.3"
-    minizlib "^2.0.0"
-  optionalDependencies:
-    encoding "^0.1.12"
-
-minipass-flush@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
-  integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
-  dependencies:
-    minipass "^3.0.0"
-
-minipass-json-stream@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7"
-  integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==
-  dependencies:
-    jsonparse "^1.3.1"
-    minipass "^3.0.0"
-
-minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4:
-  version "1.2.4"
-  resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
-  integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+minimatch@^5.0.1, minimatch@^5.1.6:
+  version "5.1.6"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+  integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
   dependencies:
-    minipass "^3.0.0"
+    brace-expansion "^2.0.1"
 
-minipass-sized@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70"
-  integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
-  dependencies:
-    minipass "^3.0.0"
-
-minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
-  version "3.1.6"
-  resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
-  integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==
+minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
+  version "9.0.5"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+  integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
   dependencies:
-    yallist "^4.0.0"
+    brace-expansion "^2.0.1"
 
-minizlib@^2.0.0, minizlib@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
-  integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
-  dependencies:
-    minipass "^3.0.0"
-    yallist "^4.0.0"
+minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.8:
+  version "1.2.8"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+  integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
 
-mkdirp-infer-owner@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316"
-  integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==
+mocha@^10.8.2:
+  version "10.8.2"
+  resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96"
+  integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==
   dependencies:
-    chownr "^2.0.0"
-    infer-owner "^1.0.4"
-    mkdirp "^1.0.3"
-
-mkdirp@^1.0.3, mkdirp@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
-  integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
-mocha@^9.2.2:
-  version "9.2.2"
-  resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9"
-  integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==
-  dependencies:
-    "@ungap/promise-all-settled" "1.1.2"
-    ansi-colors "4.1.1"
-    browser-stdout "1.3.1"
-    chokidar "3.5.3"
-    debug "4.3.3"
-    diff "5.0.0"
-    escape-string-regexp "4.0.0"
-    find-up "5.0.0"
-    glob "7.2.0"
-    growl "1.10.5"
-    he "1.2.0"
-    js-yaml "4.1.0"
-    log-symbols "4.1.0"
-    minimatch "4.2.1"
-    ms "2.1.3"
-    nanoid "3.3.1"
-    serialize-javascript "6.0.0"
-    strip-json-comments "3.1.1"
-    supports-color "8.1.1"
-    which "2.0.2"
-    workerpool "6.2.0"
-    yargs "16.2.0"
-    yargs-parser "20.2.4"
-    yargs-unparser "2.0.0"
-
-mock-stdin@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/mock-stdin/-/mock-stdin-1.0.0.tgz#efcfaf4b18077e14541742fd758b9cae4e5365ea"
-  integrity sha512-tukRdb9Beu27t6dN+XztSRHq9J0B/CoAOySGzHfn8UTfmqipA5yNT/sDUEyYdAV3Hpka6Wx6kOMxuObdOex60Q==
-
-modify-values@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
-  integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
-
-ms@2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
-  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+    ansi-colors "^4.1.3"
+    browser-stdout "^1.3.1"
+    chokidar "^3.5.3"
+    debug "^4.3.5"
+    diff "^5.2.0"
+    escape-string-regexp "^4.0.0"
+    find-up "^5.0.0"
+    glob "^8.1.0"
+    he "^1.2.0"
+    js-yaml "^4.1.0"
+    log-symbols "^4.1.0"
+    minimatch "^5.1.6"
+    ms "^2.1.3"
+    serialize-javascript "^6.0.2"
+    strip-json-comments "^3.1.1"
+    supports-color "^8.1.1"
+    workerpool "^6.5.1"
+    yargs "^16.2.0"
+    yargs-parser "^20.2.9"
+    yargs-unparser "^2.0.0"
 
-ms@2.1.3, ms@^2.0.0, ms@^2.1.1:
+ms@^2.1.1, ms@^2.1.3:
   version "2.1.3"
-  resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
   integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
 
-multimap@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8"
-  integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==
-
-multimatch@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6"
-  integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==
-  dependencies:
-    "@types/minimatch" "^3.0.3"
-    array-differ "^3.0.0"
-    array-union "^2.1.0"
-    arrify "^2.0.1"
-    minimatch "^3.0.4"
+mute-stream@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e"
+  integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==
 
-mute-stream@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
-  integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+mute-stream@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b"
+  integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==
 
-nanoid@3.3.1:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
-  integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+natural-compare-lite@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
+  integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
 
 natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-  integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+  integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
 
 natural-orderby@^2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016"
   integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==
 
-negotiator@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
-  integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
-neo-async@^2.6.0:
-  version "2.6.2"
-  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
-  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
-netrc-parser@^3.1.6:
-  version "3.1.6"
-  resolved "https://registry.yarnpkg.com/netrc-parser/-/netrc-parser-3.1.6.tgz#7243c9ec850b8e805b9bdc7eae7b1450d4a96e72"
-  integrity sha512-lY+fmkqSwntAAjfP63jB4z5p5WbuZwyMCD3pInT7dpHU/Gc6Vv90SAC6A0aNiqaRGHiuZFBtiwu+pu8W/Eyotw==
-  dependencies:
-    debug "^3.1.0"
-    execa "^0.10.0"
-
-nice-try@^1.0.4:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
-  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-nock@^13.0.0, nock@^13.3.0:
-  version "13.3.0"
-  resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.0.tgz#b13069c1a03f1ad63120f994b04bfd2556925768"
-  integrity sha512-HHqYQ6mBeiMc+N038w8LkMpDCRquCHWeNmN3v6645P3NhN2+qXOBqvPqo7Rt1VyCMzKhJ733wZqw5B7cQVFNPg==
+nise@^6.0.0:
+  version "6.1.1"
+  resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a"
+  integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==
   dependencies:
-    debug "^4.1.0"
-    json-stringify-safe "^5.0.1"
-    lodash "^4.17.21"
-    propagate "^2.0.0"
+    "@sinonjs/commons" "^3.0.1"
+    "@sinonjs/fake-timers" "^13.0.1"
+    "@sinonjs/text-encoding" "^0.7.3"
+    just-extend "^6.2.0"
+    path-to-regexp "^8.1.0"
 
-node-fetch@^2.6.1:
-  version "2.6.7"
-  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
-  integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+no-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+  integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
   dependencies:
-    whatwg-url "^5.0.0"
+    lower-case "^2.0.2"
+    tslib "^2.0.3"
 
-node-gyp@^8.2.0:
-  version "8.4.1"
-  resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937"
-  integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==
+node-preload@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301"
+  integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==
   dependencies:
-    env-paths "^2.2.0"
-    glob "^7.1.4"
-    graceful-fs "^4.2.6"
-    make-fetch-happen "^9.1.0"
-    nopt "^5.0.0"
-    npmlog "^6.0.0"
-    rimraf "^3.0.2"
-    semver "^7.3.5"
-    tar "^6.1.2"
-    which "^2.0.2"
+    process-on-spawn "^1.0.0"
 
-node-releases@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
-  integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==
-
-nopt@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
-  integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
-  dependencies:
-    abbrev "1"
+node-releases@^2.0.18:
+  version "2.0.18"
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
+  integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
 
-normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
+normalize-package-data@^2.5.0:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
   integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
@@ -4560,152 +5472,69 @@ normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-
     semver "2 || 3 || 4 || 5"
     validate-npm-package-license "^3.0.1"
 
-normalize-package-data@^3.0.0, normalize-package-data@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
-  integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+normalize-package-data@^6:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506"
+  integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==
   dependencies:
-    hosted-git-info "^4.0.1"
-    is-core-module "^2.5.0"
-    semver "^7.3.4"
-    validate-npm-package-license "^3.0.1"
+    hosted-git-info "^7.0.0"
+    semver "^7.3.5"
+    validate-npm-package-license "^3.0.4"
 
 normalize-path@^3.0.0, normalize-path@~3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
   integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
 
-normalize-url@^6.0.1:
-  version "6.1.0"
-  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
-  integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
-
-npm-bundled@^1.1.1:
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1"
-  integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==
-  dependencies:
-    npm-normalize-package-bin "^1.0.1"
-
-npm-install-checks@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4"
-  integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==
-  dependencies:
-    semver "^7.1.1"
-
-npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
-  integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+normalize-url@^8.0.0:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a"
+  integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==
 
-npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5:
-  version "8.1.5"
-  resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44"
-  integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==
+npm-run-path@^5.1.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
+  integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
   dependencies:
-    hosted-git-info "^4.0.1"
-    semver "^7.3.4"
-    validate-npm-package-name "^3.0.0"
+    path-key "^4.0.0"
 
-npm-packlist@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9"
-  integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==
+nyc@^15.1.0:
+  version "15.1.0"
+  resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02"
+  integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==
   dependencies:
+    "@istanbuljs/load-nyc-config" "^1.0.0"
+    "@istanbuljs/schema" "^0.1.2"
+    caching-transform "^4.0.0"
+    convert-source-map "^1.7.0"
+    decamelize "^1.2.0"
+    find-cache-dir "^3.2.0"
+    find-up "^4.1.0"
+    foreground-child "^2.0.0"
+    get-package-type "^0.1.0"
     glob "^7.1.6"
-    ignore-walk "^4.0.1"
-    npm-bundled "^1.1.1"
-    npm-normalize-package-bin "^1.0.1"
-
-npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1:
-  version "6.1.1"
-  resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148"
-  integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==
-  dependencies:
-    npm-install-checks "^4.0.0"
-    npm-normalize-package-bin "^1.0.1"
-    npm-package-arg "^8.1.2"
-    semver "^7.3.4"
-
-npm-registry-fetch@^11.0.0:
-  version "11.0.0"
-  resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76"
-  integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==
-  dependencies:
-    make-fetch-happen "^9.0.1"
-    minipass "^3.1.3"
-    minipass-fetch "^1.3.0"
-    minipass-json-stream "^1.0.1"
-    minizlib "^2.0.0"
-    npm-package-arg "^8.0.0"
-
-npm-run-path@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
-  integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
-  dependencies:
-    path-key "^2.0.0"
-
-npm-run-path@^4.0.0, npm-run-path@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
-  integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
-  dependencies:
-    path-key "^3.0.0"
-
-npmlog@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0"
-  integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==
-  dependencies:
-    are-we-there-yet "^2.0.0"
-    console-control-strings "^1.1.0"
-    gauge "^3.0.0"
-    set-blocking "^2.0.0"
-
-npmlog@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c"
-  integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==
-  dependencies:
-    are-we-there-yet "^2.0.0"
-    console-control-strings "^1.1.0"
-    gauge "^4.0.0"
-    set-blocking "^2.0.0"
-
-nps@^5.10.0:
-  version "5.10.0"
-  resolved "https://registry.yarnpkg.com/nps/-/nps-5.10.0.tgz#cb7e7c8fe9a0d28061bf1d496a7192694ddc6185"
-  integrity sha512-tye+0hoKq3pB6NhykoPcOzwn4nEvwVvh1kJEDc+21gYordNdaBlkPv8ZlrZkuEWLUeujvS8VQ56KO9QGoPKkEA==
-  dependencies:
-    arrify "^1.0.1"
-    chalk "^2.0.1"
-    common-tags "^1.4.0"
-    find-up "^2.1.0"
-    js-yaml "^3.9.0"
-    lodash "^4.17.4"
-    manage-path "^2.0.0"
-    prefix-matches "^1.0.1"
-    readline-sync "^1.4.7"
-    spawn-command-with-kill "^1.0.0"
-    type-detect "^4.0.3"
-    yargs "14.2.0"
-
-number-is-nan@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-  integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-object-assign@^4.0.1, object-assign@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+    istanbul-lib-coverage "^3.0.0"
+    istanbul-lib-hook "^3.0.0"
+    istanbul-lib-instrument "^4.0.0"
+    istanbul-lib-processinfo "^2.0.2"
+    istanbul-lib-report "^3.0.0"
+    istanbul-lib-source-maps "^4.0.0"
+    istanbul-reports "^3.0.2"
+    make-dir "^3.0.0"
+    node-preload "^0.2.1"
+    p-map "^3.0.0"
+    process-on-spawn "^1.0.0"
+    resolve-from "^5.0.0"
+    rimraf "^3.0.0"
+    signal-exit "^3.0.2"
+    spawn-wrap "^2.0.0"
+    test-exclude "^6.0.0"
+    yargs "^15.0.2"
 
-object-inspect@^1.12.2, object-inspect@^1.9.0:
-  version "1.12.2"
-  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
-  integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
+object-inspect@^1.13.1:
+  version "1.13.2"
+  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
+  integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
 
 object-keys@^1.1.1:
   version "1.1.1"
@@ -4714,93 +5543,94 @@ object-keys@^1.1.1:
 
 object-treeify@^1.1.33:
   version "1.1.33"
-  resolved "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40"
+  resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40"
   integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==
 
-object.assign@^4.1.4:
-  version "4.1.4"
-  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
-  integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
+object.assign@^4.1.5:
+  version "4.1.5"
+  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
+  integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+  dependencies:
+    call-bind "^1.0.5"
+    define-properties "^1.2.1"
+    has-symbols "^1.0.3"
+    object-keys "^1.1.1"
+
+object.fromentries@^2.0.8:
+  version "2.0.8"
+  resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65"
+  integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==
+  dependencies:
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.2"
+    es-object-atoms "^1.0.0"
+
+object.groupby@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e"
+  integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==
+  dependencies:
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.2"
+
+object.values@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b"
+  integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
   dependencies:
-    call-bind "^1.0.2"
-    define-properties "^1.1.4"
-    has-symbols "^1.0.3"
-    object-keys "^1.1.1"
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-object-atoms "^1.0.0"
 
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
+once@^1.3.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+  integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
   dependencies:
     wrappy "1"
 
-onetime@^5.1.0, onetime@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
-  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+onetime@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+  integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
   dependencies:
-    mimic-fn "^2.1.0"
+    mimic-fn "^4.0.0"
 
-open@^6.2.0:
-  version "6.4.0"
-  resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9"
-  integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==
+onetime@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60"
+  integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==
   dependencies:
-    is-wsl "^1.1.0"
+    mimic-function "^5.0.0"
 
-optionator@^0.9.1:
-  version "0.9.1"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
-  integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+optionator@^0.9.3:
+  version "0.9.4"
+  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+  integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
   dependencies:
     deep-is "^0.1.3"
     fast-levenshtein "^2.0.6"
     levn "^0.4.1"
     prelude-ls "^1.2.1"
     type-check "^0.4.0"
-    word-wrap "^1.2.3"
-
-ora@^5.4.1:
-  version "5.4.1"
-  resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
-  integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
-  dependencies:
-    bl "^4.1.0"
-    chalk "^4.1.0"
-    cli-cursor "^3.1.0"
-    cli-spinners "^2.5.0"
-    is-interactive "^1.0.0"
-    is-unicode-supported "^0.1.0"
-    log-symbols "^4.1.0"
-    strip-ansi "^6.0.0"
-    wcwidth "^1.0.1"
+    word-wrap "^1.2.5"
 
 os-tmpdir@~1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+  integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
 
-p-cancelable@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
-  integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
-
-p-finally@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
-p-limit@^1.1.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
-  integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
-  dependencies:
-    p-try "^1.0.0"
+p-cancelable@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050"
+  integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==
 
-p-limit@^2.0.0, p-limit@^2.2.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
-  integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
+p-limit@^2.2.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
   dependencies:
     p-try "^2.0.0"
 
@@ -4811,19 +5641,12 @@ p-limit@^3.0.2:
   dependencies:
     yocto-queue "^0.1.0"
 
-p-locate@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
-  integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
-  dependencies:
-    p-limit "^1.1.0"
-
-p-locate@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
-  integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+p-limit@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+  integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
   dependencies:
-    p-limit "^2.0.0"
+    yocto-queue "^1.0.0"
 
 p-locate@^4.1.0:
   version "4.1.0"
@@ -4839,182 +5662,126 @@ p-locate@^5.0.0:
   dependencies:
     p-limit "^3.0.2"
 
-p-map@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
-  integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
-  dependencies:
-    aggregate-error "^3.0.0"
-
-p-queue@^6.6.2:
-  version "6.6.2"
-  resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426"
-  integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==
-  dependencies:
-    eventemitter3 "^4.0.4"
-    p-timeout "^3.2.0"
-
-p-timeout@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
-  integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
+p-locate@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f"
+  integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==
   dependencies:
-    p-finally "^1.0.0"
+    p-limit "^4.0.0"
 
-p-transform@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npmjs.org/p-transform/-/p-transform-1.3.0.tgz#2da960ba92c6a56efbe75cbd1edf3ea7b3191049"
-  integrity sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==
+p-map@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
+  integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==
   dependencies:
-    debug "^4.3.2"
-    p-queue "^6.6.2"
-
-p-try@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-  integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+    aggregate-error "^3.0.0"
 
 p-try@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
-  integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
-
-pacote@^12.0.0, pacote@^12.0.2:
-  version "12.0.2"
-  resolved "https://registry.npmjs.org/pacote/-/pacote-12.0.2.tgz#14ae30a81fe62ec4fc18c071150e6763e932527c"
-  integrity sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg==
-  dependencies:
-    "@npmcli/git" "^2.1.0"
-    "@npmcli/installed-package-contents" "^1.0.6"
-    "@npmcli/promise-spawn" "^1.2.0"
-    "@npmcli/run-script" "^2.0.0"
-    cacache "^15.0.5"
-    chownr "^2.0.0"
-    fs-minipass "^2.1.0"
-    infer-owner "^1.0.4"
-    minipass "^3.1.3"
-    mkdirp "^1.0.3"
-    npm-package-arg "^8.0.1"
-    npm-packlist "^3.0.0"
-    npm-pick-manifest "^6.0.0"
-    npm-registry-fetch "^11.0.0"
-    promise-retry "^2.0.1"
-    read-package-json-fast "^2.0.1"
-    rimraf "^3.0.2"
-    ssri "^8.0.1"
-    tar "^6.1.0"
-
-pad-component@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/pad-component/-/pad-component-0.0.1.tgz#ad1f22ce1bf0fdc0d6ddd908af17f351a404b8ac"
-  integrity sha1-rR8izhvw/cDW3dkIrxfzUaQEuKw=
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
 
-parent-module@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5"
-  integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==
+package-hash@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506"
+  integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==
   dependencies:
-    callsites "^3.0.0"
+    graceful-fs "^4.1.15"
+    hasha "^5.0.0"
+    lodash.flattendeep "^4.4.0"
+    release-zalgo "^1.0.0"
 
-parse-conflict-json@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.1.tgz#76647dd072e6068bcaff20be6ccea68a18e1fb58"
-  integrity sha512-Y7nYw+QaSGBto1LB9lgwOR05Rtz5SbuTf+Oe7HJ6SYQ/DHsvRjQ8O03oWdJbvkt6GzDWospgyZbGmjDYL0sDgA==
+param-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
+  integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
   dependencies:
-    json-parse-even-better-errors "^2.3.1"
-    just-diff "^5.0.1"
-    just-diff-apply "^4.0.1"
+    dot-case "^3.0.4"
+    tslib "^2.0.3"
 
-parse-github-repo-url@^1.3.0:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50"
-  integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A=
-
-parse-json@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
-  integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+parent-module@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
   dependencies:
-    error-ex "^1.2.0"
+    callsites "^3.0.0"
 
 parse-json@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
-  integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+  integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
   dependencies:
     error-ex "^1.3.1"
     json-parse-better-errors "^1.0.1"
 
-parse-json@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
-  integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
+parse-json@^5.0.0, parse-json@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
   dependencies:
     "@babel/code-frame" "^7.0.0"
     error-ex "^1.3.1"
-    json-parse-better-errors "^1.0.1"
+    json-parse-even-better-errors "^2.3.0"
     lines-and-columns "^1.1.6"
 
-password-prompt@^1.0.7, password-prompt@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923"
-  integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==
+pascal-case@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+  integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
   dependencies:
-    ansi-escapes "^3.1.0"
-    cross-spawn "^6.0.5"
+    no-case "^3.0.4"
+    tslib "^2.0.3"
 
-path-exists@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
-  integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+password-prompt@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.3.tgz#05e539f4e7ca4d6c865d479313f10eb9db63ee5f"
+  integrity sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==
   dependencies:
-    pinkie-promise "^2.0.0"
+    ansi-escapes "^4.3.2"
+    cross-spawn "^7.0.3"
 
-path-exists@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-  integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+path-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f"
+  integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==
+  dependencies:
+    dot-case "^3.0.4"
+    tslib "^2.0.3"
 
 path-exists@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
   integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
 
+path-exists@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
+  integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-key@^2.0.0, path-key@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+  integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
 
-path-key@^3.0.0, path-key@^3.1.0:
+path-key@^3.1.0:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
   integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
 
-path-parse@^1.0.6:
+path-key@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+  integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
+path-parse@^1.0.7:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
   integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 
-path-type@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
-  integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
-  dependencies:
-    graceful-fs "^4.1.2"
-    pify "^2.0.0"
-    pinkie-promise "^2.0.0"
-
-path-type@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
-  integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
-  dependencies:
-    pify "^3.0.0"
+path-to-regexp@^8.1.0:
+  version "8.2.0"
+  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4"
+  integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
 
 path-type@^4.0.0:
   version "4.0.0"
@@ -5026,51 +5793,22 @@ pathval@^1.1.1:
   resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
   integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
 
-pause-stream@0.0.11:
-  version "0.0.11"
-  resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
-  integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
-  dependencies:
-    through "~2.3"
-
-picocolors@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
-  integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+picocolors@^1.0.0, picocolors@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
+  integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
 
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 
-pify@^2.0.0, pify@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pify@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
-  integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
-pify@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
-  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
-pinkie-promise@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
-  integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
-  dependencies:
-    pinkie "^2.0.0"
-
-pinkie@^2.0.0:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-  integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+pidtree@~0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c"
+  integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==
 
-pkg-dir@^4.2.0:
+pkg-dir@^4.1.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
   integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
@@ -5079,134 +5817,55 @@ pkg-dir@^4.2.0:
 
 pluralize@^8.0.0:
   version "8.0.0"
-  resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
+  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
   integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
 
-preferred-pm@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6"
-  integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==
-  dependencies:
-    find-up "^5.0.0"
-    find-yarn-workspace-root2 "1.2.16"
-    path-exists "^4.0.0"
-    which-pm "2.0.0"
-
-prefix-matches@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/prefix-matches/-/prefix-matches-1.0.1.tgz#02e34ce27f33af48e68bbfce2aac2a004bc2b76c"
-  integrity sha1-AuNM4n8zr0jmi7/OKqwqAEvCt2w=
-  dependencies:
-    is-object "^1.0.1"
-    starts-with "^1.0.2"
+possible-typed-array-names@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
+  integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
 
 prelude-ls@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
   integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
 
-pretty-bytes@^5.3.0:
-  version "5.6.0"
-  resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
-  integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
+prettier@^3.4.2:
+  version "3.4.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f"
+  integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
 
-proc-log@^1.0.0:
+process-on-spawn@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77"
-  integrity sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==
-
-process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
-  integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-progress@^2.0.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
-  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
-promise-all-reject-late@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2"
-  integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==
-
-promise-call-limit@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz#4bdee03aeb85674385ca934da7114e9bcd3c6e24"
-  integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==
-
-promise-inflight@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
-  integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-
-promise-retry@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
-  integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
-  dependencies:
-    err-code "^2.0.2"
-    retry "^0.12.0"
-
-propagate@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45"
-  integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==
-
-ps-tree@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
-  integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
+  resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93"
+  integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==
   dependencies:
-    event-stream "=3.3.4"
+    fromentries "^1.2.0"
 
-pump@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
-  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
-  dependencies:
-    end-of-stream "^1.1.0"
-    once "^1.3.1"
-
-punycode@1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+proto-list@~1.2.1:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+  integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
 
 punycode@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
-  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-q@^1.5.1:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
-  integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-
-querystring@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-
-quick-lru@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
-  integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+  integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
 
-quick-lru@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
-  integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+queue-microtask@^1.2.2:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
 
 quick-lru@^5.1.1:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
   integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
 
-ramda@^0.27.1:
-  version "0.27.1"
-  resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9"
-  integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==
+rambda@^7.4.0:
+  version "7.5.0"
+  resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe"
+  integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==
 
 randombytes@^2.1.0:
   version "2.1.0"
@@ -5215,35 +5874,6 @@ randombytes@^2.1.0:
   dependencies:
     safe-buffer "^5.1.0"
 
-read-cmd-shim@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9"
-  integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==
-
-read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83"
-  integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==
-  dependencies:
-    json-parse-even-better-errors "^2.3.0"
-    npm-normalize-package-bin "^1.0.1"
-
-read-pkg-up@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
-  integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
-  dependencies:
-    find-up "^1.0.0"
-    read-pkg "^1.0.0"
-
-read-pkg-up@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
-  integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=
-  dependencies:
-    find-up "^2.0.0"
-    read-pkg "^3.0.0"
-
 read-pkg-up@^7.0.1:
   version "7.0.1"
   resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
@@ -5253,7 +5883,7 @@ read-pkg-up@^7.0.1:
     read-pkg "^5.2.0"
     type-fest "^0.8.1"
 
-read-pkg@*, read-pkg@^5.2.0:
+read-pkg@^5.2.0:
   version "5.2.0"
   resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
   integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
@@ -5263,56 +5893,6 @@ read-pkg@*, read-pkg@^5.2.0:
     parse-json "^5.0.0"
     type-fest "^0.6.0"
 
-read-pkg@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
-  integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
-  dependencies:
-    load-json-file "^1.0.0"
-    normalize-package-data "^2.3.2"
-    path-type "^1.0.0"
-
-read-pkg@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
-  integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
-  dependencies:
-    load-json-file "^4.0.0"
-    normalize-package-data "^2.3.2"
-    path-type "^3.0.0"
-
-readable-stream@3, readable-stream@^3.4.0, readable-stream@^3.6.0:
-  version "3.6.0"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
-  integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
-  dependencies:
-    inherits "^2.0.3"
-    string_decoder "^1.1.1"
-    util-deprecate "^1.0.1"
-
-readable-stream@^2.0.2, readable-stream@^2.3.5, readable-stream@~2.3.6:
-  version "2.3.6"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
-  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readdir-scoped-modules@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
-  integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
-  dependencies:
-    debuglog "^1.0.1"
-    dezalgo "^1.0.0"
-    graceful-fs "^4.1.2"
-    once "^1.3.0"
-
 readdirp@~3.6.0:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -5320,93 +5900,69 @@ readdirp@~3.6.0:
   dependencies:
     picomatch "^2.2.1"
 
-readline-sync@^1.4.7:
-  version "1.4.9"
-  resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda"
-  integrity sha1-PtqOZfI80qF+YTAbHwADOWr17No=
-
 rechoir@^0.6.2:
   version "0.6.2"
   resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
-  integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+  integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==
   dependencies:
     resolve "^1.1.6"
 
-redent@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
-  integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
-  dependencies:
-    indent-string "^2.1.0"
-    strip-indent "^1.0.1"
-
-redent@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa"
-  integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=
-  dependencies:
-    indent-string "^3.0.0"
-    strip-indent "^2.0.0"
-
-redent@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
-  integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
-  dependencies:
-    indent-string "^4.0.0"
-    strip-indent "^3.0.0"
-
 redeyed@~2.1.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b"
-  integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=
+  integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==
   dependencies:
     esprima "~4.0.0"
 
-regexp-tree@^0.1.23, regexp-tree@~0.1.1:
-  version "0.1.24"
-  resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d"
-  integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==
+regexp-tree@^0.1.27:
+  version "0.1.27"
+  resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd"
+  integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==
 
-regexp.prototype.flags@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
-  integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
+regexp.prototype.flags@^1.5.2:
+  version "1.5.3"
+  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42"
+  integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==
   dependencies:
-    call-bind "^1.0.2"
-    define-properties "^1.1.3"
-    functions-have-names "^1.2.2"
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-errors "^1.3.0"
+    set-function-name "^2.0.2"
 
-regexpp@^3.0.0, regexpp@^3.1.0:
+regexpp@^3.0.0:
   version "3.2.0"
-  resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
+  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
   integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
 
-remove-trailing-separator@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+registry-auth-token@^5.0.3:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.3.tgz#417d758c8164569de8cf5cabff16cc937902dcc6"
+  integrity sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==
+  dependencies:
+    "@pnpm/npm-conf" "^2.1.0"
 
-repeating@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
-  integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+regjsparser@^0.10.0:
+  version "0.10.0"
+  resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892"
+  integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==
   dependencies:
-    is-finite "^1.0.0"
+    jsesc "~0.5.0"
 
-replace-ext@^1.0.0:
+release-zalgo@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
-  integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
+  resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730"
+  integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==
+  dependencies:
+    es6-error "^4.0.1"
 
 require-directory@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-  integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+  integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
 
 require-from-string@^2.0.2:
   version "2.0.2"
-  resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
   integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
 
 require-main-filename@^2.0.0:
@@ -5414,7 +5970,7 @@ require-main-filename@^2.0.0:
   resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
   integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
 
-resolve-alpn@^1.0.0:
+resolve-alpn@^1.2.0:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
   integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
@@ -5424,39 +5980,55 @@ resolve-from@^4.0.0:
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
   integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
 
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1:
-  version "1.20.0"
-  resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
-  integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+resolve-from@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+  integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-pkg-maps@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
+  integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
+
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.22.1, resolve@^1.22.4:
+  version "1.22.8"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+  integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
   dependencies:
-    is-core-module "^2.2.0"
-    path-parse "^1.0.6"
+    is-core-module "^2.13.0"
+    path-parse "^1.0.7"
+    supports-preserve-symlinks-flag "^1.0.0"
 
-responselike@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc"
-  integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
+responselike@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626"
+  integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==
   dependencies:
-    lowercase-keys "^2.0.0"
+    lowercase-keys "^3.0.0"
 
-restore-cursor@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
-  integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+restore-cursor@^5.0.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7"
+  integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==
   dependencies:
-    onetime "^5.1.0"
-    signal-exit "^3.0.2"
+    onetime "^7.0.0"
+    signal-exit "^4.1.0"
 
-retry@^0.12.0:
-  version "0.12.0"
-  resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
-  integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+retry@0.13.1:
+  version "0.13.1"
+  resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
+  integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
 
-reusify@^1.0.0:
+reusify@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
   integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
 
+rfdc@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
+  integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
+
 rimraf@^3.0.0, rimraf@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -5464,111 +6036,99 @@ rimraf@^3.0.0, rimraf@^3.0.2:
   dependencies:
     glob "^7.1.3"
 
-run-async@^2.0.0, run-async@^2.4.0:
-  version "2.4.1"
-  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
-  integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-
 run-parallel@^1.1.9:
-  version "1.1.9"
-  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
-  integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
-
-rxjs@^6.4.0:
-  version "6.6.7"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
-  integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+  integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
   dependencies:
-    tslib "^1.9.0"
+    queue-microtask "^1.2.2"
 
-rxjs@^7.0.0, rxjs@^7.2.0:
-  version "7.5.7"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39"
-  integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==
+safe-array-concat@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
+  integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
   dependencies:
-    tslib "^2.1.0"
+    call-bind "^1.0.7"
+    get-intrinsic "^1.2.4"
+    has-symbols "^1.0.3"
+    isarray "^2.0.5"
 
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
+safe-buffer@^5.0.1, safe-buffer@^5.1.0:
   version "5.2.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex-test@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
-  integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
+safe-regex-test@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
+  integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
   dependencies:
-    call-bind "^1.0.2"
-    get-intrinsic "^1.1.3"
+    call-bind "^1.0.6"
+    es-errors "^1.3.0"
     is-regex "^1.1.4"
 
-safe-regex@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2"
-  integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==
-  dependencies:
-    regexp-tree "~0.1.1"
-
-"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+"safer-buffer@>= 2.1.2 < 3":
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
-sax@1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
-  integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
-
-sax@>=0.6.0:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-scoped-regex@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz#7b9be845d81fd9d21d1ec97c61a0b7cf86d2015f"
-  integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==
+"semver@2 || 3 || 4 || 5":
+  version "5.7.2"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
+  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
 
-"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
-  version "5.7.1"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
-  integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+  integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
 
-semver@^6.0.0, semver@^6.1.0, semver@^6.3.0:
-  version "6.3.0"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
-  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^7.0.0, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
+  version "7.6.3"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
+  integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
 
-semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8:
-  version "7.3.8"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
-  integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+sentence-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f"
+  integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==
   dependencies:
-    lru-cache "^6.0.0"
+    no-case "^3.0.4"
+    tslib "^2.0.3"
+    upper-case-first "^2.0.2"
 
-serialize-javascript@6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
-  integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+serialize-javascript@^6.0.2:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
+  integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
   dependencies:
     randombytes "^2.1.0"
 
 set-blocking@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+  integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
 
-shebang-command@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
-  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+set-function-length@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+  integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+  dependencies:
+    define-data-property "^1.1.4"
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+    get-intrinsic "^1.2.4"
+    gopd "^1.0.1"
+    has-property-descriptors "^1.0.2"
+
+set-function-name@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
+  integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
   dependencies:
-    shebang-regex "^1.0.0"
+    define-data-property "^1.1.4"
+    es-errors "^1.3.0"
+    functions-have-names "^1.2.3"
+    has-property-descriptors "^1.0.2"
 
 shebang-command@^2.0.0:
   version "2.0.0"
@@ -5577,22 +6137,12 @@ shebang-command@^2.0.0:
   dependencies:
     shebang-regex "^3.0.0"
 
-shebang-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
 shebang-regex@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
   integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
-shell-quote@^1.7.3:
-  version "1.7.3"
-  resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
-  integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
-
-shelljs@^0.8.3, shelljs@^0.8.5:
+shelljs@^0.8.5:
   version "0.8.5"
   resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
   integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
@@ -5610,24 +6160,54 @@ shx@^0.3.4:
     shelljs "^0.8.5"
 
 side-channel@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
-  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
+  integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+  dependencies:
+    call-bind "^1.0.7"
+    es-errors "^1.3.0"
+    get-intrinsic "^1.2.4"
+    object-inspect "^1.13.1"
+
+signal-exit@^3.0.2:
+  version "3.0.7"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+  integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+signal-exit@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
+  integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+simple-swizzle@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+  integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
   dependencies:
-    call-bind "^1.0.0"
-    get-intrinsic "^1.0.2"
-    object-inspect "^1.9.0"
+    is-arrayish "^0.3.1"
 
-signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
-  version "3.0.6"
-  resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
-  integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
+sinon@^18.0.1:
+  version "18.0.1"
+  resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e"
+  integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw==
+  dependencies:
+    "@sinonjs/commons" "^3.0.1"
+    "@sinonjs/fake-timers" "11.2.2"
+    "@sinonjs/samsam" "^8.0.0"
+    diff "^5.2.0"
+    nise "^6.0.0"
+    supports-color "^7"
 
 slash@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
   integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
 
+slash@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+  integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
 slice-ansi@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
@@ -5637,147 +6217,108 @@ slice-ansi@^4.0.0:
     astral-regex "^2.0.0"
     is-fullwidth-code-point "^3.0.0"
 
-smart-buffer@^4.1.0:
-  version "4.2.0"
-  resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
-  integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
-
-socks-proxy-agent@^6.0.0:
-  version "6.1.1"
-  resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87"
-  integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==
+slice-ansi@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a"
+  integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==
   dependencies:
-    agent-base "^6.0.2"
-    debug "^4.3.1"
-    socks "^2.6.1"
+    ansi-styles "^6.0.0"
+    is-fullwidth-code-point "^4.0.0"
 
-socks@^2.6.1:
-  version "2.6.1"
-  resolved "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e"
-  integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==
+slice-ansi@^7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9"
+  integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==
   dependencies:
-    ip "^1.1.5"
-    smart-buffer "^4.1.0"
+    ansi-styles "^6.2.1"
+    is-fullwidth-code-point "^5.0.0"
 
-sort-keys@^4.0.0, sort-keys@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18"
-  integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==
+snake-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
+  integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
   dependencies:
-    is-plain-obj "^2.0.0"
+    dot-case "^3.0.4"
+    tslib "^2.0.3"
 
-source-map@^0.5.0:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+sort-object-keys@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45"
+  integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==
+
+sort-package-json@^2.10.1:
+  version "2.10.1"
+  resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-2.10.1.tgz#18e7fa0172233cb2d4d926f7c99e6bfcf4d1d25c"
+  integrity sha512-d76wfhgUuGypKqY72Unm5LFnMpACbdxXsLPcL27pOsSrmVqH3PztFp1uq+Z22suk15h7vXmTesuh2aEjdCqb5w==
+  dependencies:
+    detect-indent "^7.0.1"
+    detect-newline "^4.0.0"
+    get-stdin "^9.0.0"
+    git-hooks-list "^3.0.0"
+    globby "^13.1.2"
+    is-plain-obj "^4.1.0"
+    semver "^7.6.0"
+    sort-object-keys "^1.1.3"
 
 source-map@^0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
   integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
 
-spawn-command-with-kill@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/spawn-command-with-kill/-/spawn-command-with-kill-1.0.2.tgz#c49bd30230753afef08203441b13b53cca475058"
-  integrity sha512-EPzhF/ZO19xzZ1RCyrNorAal5o5FoZoXqHeybQm4vyfMmNbOU5cvfKQsTuspcBVilL5QDmybYpwkj9/GgaEd8Q==
+spawn-wrap@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e"
+  integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==
   dependencies:
-    ps-tree "^1.2.0"
-    spawn-command "^0.0.2-1"
-
-spawn-command@^0.0.2-1:
-  version "0.0.2-1"
-  resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
-  integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
+    foreground-child "^2.0.0"
+    is-windows "^1.0.2"
+    make-dir "^3.0.0"
+    rimraf "^3.0.0"
+    signal-exit "^3.0.2"
+    which "^2.0.1"
 
 spdx-correct@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
-  integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c"
+  integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==
   dependencies:
     spdx-expression-parse "^3.0.0"
     spdx-license-ids "^3.0.0"
 
 spdx-exceptions@^2.1.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
-  integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66"
+  integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==
 
 spdx-expression-parse@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
-  integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+  integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
   dependencies:
     spdx-exceptions "^2.1.0"
     spdx-license-ids "^3.0.0"
 
 spdx-license-ids@^3.0.0:
-  version "3.0.5"
-  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
-  integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
-
-split2@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
-  integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==
-  dependencies:
-    through2 "^2.0.2"
-
-split@0.3:
-  version "0.3.3"
-  resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
-  integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
-  dependencies:
-    through "2"
+  version "3.0.20"
+  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89"
+  integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==
 
-split@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
-  integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==
-  dependencies:
-    through "2"
+split2@^4.0.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
+  integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
 
 sprintf-js@~1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-ssri@^8.0.0, ssri@^8.0.1:
-  version "8.0.1"
-  resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
-  integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
-  dependencies:
-    minipass "^3.1.1"
+  integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
 
-starts-with@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/starts-with/-/starts-with-1.0.2.tgz#16793a729d89d4cf3d4fb2eda2f908ae357f196f"
-  integrity sha1-Fnk6cp2J1M89T7LtovkIrjV/GW8=
-
-stdout-stderr@^0.1.9:
-  version "0.1.9"
-  resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.9.tgz#9b48ee04eff955ee07776e27125d5524d9d02f57"
-  integrity sha1-m0juBO/5Ve4Hd24nEl1VJNnQL1c=
-  dependencies:
-    debug "^3.1.0"
-    strip-ansi "^4.0.0"
-
-stream-combiner@~0.0.4:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
-  integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=
-  dependencies:
-    duplexer "~0.1.1"
-
-string-width@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
-  integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
-  dependencies:
-    code-point-at "^1.0.0"
-    is-fullwidth-code-point "^1.0.0"
-    strip-ansi "^3.0.0"
+string-argv@~0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
+  integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
 
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -5786,131 +6327,71 @@ string-width@^1.0.1:
     is-fullwidth-code-point "^3.0.0"
     strip-ansi "^6.0.1"
 
-string-width@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-  integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
-  dependencies:
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^4.0.0"
-
-string-width@^3.0.0, string-width@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
-  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
-  dependencies:
-    emoji-regex "^7.0.1"
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^5.1.0"
-
-string.prototype.trimend@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
-  integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
-  dependencies:
-    call-bind "^1.0.2"
-    define-properties "^1.1.4"
-    es-abstract "^1.19.5"
-
-string.prototype.trimstart@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
-  integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
-  dependencies:
-    call-bind "^1.0.2"
-    define-properties "^1.1.4"
-    es-abstract "^1.19.5"
-
-string_decoder@^1.1.1:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
-  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
-  dependencies:
-    safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+string-width@^7.0.0:
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc"
+  integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==
   dependencies:
-    safe-buffer "~5.1.0"
+    emoji-regex "^10.3.0"
+    get-east-asian-width "^1.0.0"
+    strip-ansi "^7.1.0"
 
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+string.prototype.trim@^1.2.9:
+  version "1.2.9"
+  resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
+  integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
   dependencies:
-    ansi-regex "^2.0.0"
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.0"
+    es-object-atoms "^1.0.0"
 
-strip-ansi@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-  integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+string.prototype.trimend@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229"
+  integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
   dependencies:
-    ansi-regex "^3.0.0"
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-object-atoms "^1.0.0"
 
-strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
-  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+string.prototype.trimstart@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
+  integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
   dependencies:
-    ansi-regex "^4.1.0"
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-object-atoms "^1.0.0"
 
 strip-ansi@^6.0.0, strip-ansi@^6.0.1:
   version "6.0.1"
-  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
   dependencies:
     ansi-regex "^5.0.1"
 
-strip-bom-buf@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
-  integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=
-  dependencies:
-    is-utf8 "^0.2.1"
-
-strip-bom-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
-  integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco=
-  dependencies:
-    first-chunk-stream "^2.0.0"
-    strip-bom "^2.0.0"
-
-strip-bom@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
-  integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+strip-ansi@^7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
+  integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
   dependencies:
-    is-utf8 "^0.2.0"
+    ansi-regex "^6.0.1"
 
 strip-bom@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
-  integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
-strip-eof@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-  integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+  integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
 
-strip-final-newline@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
-  integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-
-strip-indent@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
-  integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
-  dependencies:
-    get-stdin "^4.0.1"
+strip-bom@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+  integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
 
-strip-indent@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
-  integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
+strip-final-newline@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+  integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
 
 strip-indent@^3.0.0:
   version "3.0.0"
@@ -5919,131 +6400,88 @@ strip-indent@^3.0.0:
   dependencies:
     min-indent "^1.0.0"
 
-strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+strip-json-comments@^3.1.1:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
   integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
 
-supports-color@8.1.1, supports-color@^8.1.0, supports-color@^8.1.1:
-  version "8.1.1"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
-  integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
-  dependencies:
-    has-flag "^4.0.0"
-
-supports-color@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-  integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+strnum@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
+  integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
 
-supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
+supports-color@^5.3.0:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
   integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
   dependencies:
     has-flag "^3.0.0"
 
-supports-color@^7.0.0, supports-color@^7.1.0:
+supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0:
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
   integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
   dependencies:
     has-flag "^4.0.0"
 
-supports-hyperlinks@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7"
-  integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==
+supports-color@^8, supports-color@^8.1.1:
+  version "8.1.1"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+  integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
   dependencies:
-    has-flag "^2.0.0"
-    supports-color "^5.0.0"
+    has-flag "^4.0.0"
 
 supports-hyperlinks@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb"
-  integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
+  integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
   dependencies:
     has-flag "^4.0.0"
     supports-color "^7.0.0"
 
-table@^6.0.9:
-  version "6.7.3"
-  resolved "https://registry.npmjs.org/table/-/table-6.7.3.tgz#255388439715a738391bd2ee4cbca89a4d05a9b7"
-  integrity sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==
-  dependencies:
-    ajv "^8.0.1"
-    lodash.truncate "^4.4.2"
-    slice-ansi "^4.0.0"
-    string-width "^4.2.3"
-    strip-ansi "^6.0.1"
-
-taketalk@^1.0.0:
+supports-preserve-symlinks-flag@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/taketalk/-/taketalk-1.0.0.tgz#b4d4f0deed206ae7df775b129ea2ca6de52f26dd"
-  integrity sha1-tNTw3u0gauffd1sSnqLKbeUvJt0=
-  dependencies:
-    get-stdin "^4.0.1"
-    minimist "^1.1.0"
+  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 
-tar@^6.0.2, tar@^6.1.0, tar@^6.1.2:
-  version "6.1.11"
-  resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
-  integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
-  dependencies:
-    chownr "^2.0.0"
-    fs-minipass "^2.0.0"
-    minipass "^3.0.0"
-    minizlib "^2.1.1"
-    mkdirp "^1.0.3"
-    yallist "^4.0.0"
-
-temp-dir@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
-  integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
+tapable@^2.2.0:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+  integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
 
-tempfile@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-3.0.0.tgz#5376a3492de7c54150d0cc0612c3f00e2cdaf76c"
-  integrity sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==
+test-exclude@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
+  integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
   dependencies:
-    temp-dir "^2.0.0"
-    uuid "^3.3.2"
+    "@istanbuljs/schema" "^0.1.2"
+    glob "^7.1.4"
+    minimatch "^3.0.4"
 
-text-extensions@^1.0.0:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
-  integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
+text-extensions@^2.0.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34"
+  integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==
 
 text-table@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-  integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-
-textextensions@^5.12.0, textextensions@^5.13.0:
-  version "5.14.0"
-  resolved "https://registry.npmjs.org/textextensions/-/textextensions-5.14.0.tgz#a6ff6aee5faaa751e6157d422c722a2bfd59eedf"
-  integrity sha512-4cAYwNFNYlIAHBUo7p6zw8POUvWbZor+/R0Tanv+rIhsauEyV9QSrEXL40pI+GfTQxKX8k6Tyw6CmdSDSmASrg==
-
-through2@^2.0.0, through2@^2.0.2:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
-  integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
-  dependencies:
-    readable-stream "~2.3.6"
-    xtend "~4.0.1"
-
-through2@^4.0.0:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
-  integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==
-  dependencies:
-    readable-stream "3"
+  integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
 
-through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1:
+"through@>=2.2.7 <3":
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-  integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+  integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+tiny-jsonc@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/tiny-jsonc/-/tiny-jsonc-1.0.1.tgz#71de47c9d812b411e87a9f3ab4a5fe42cd8d8f9c"
+  integrity sha512-ik6BCxzva9DoiEfDX/li0L2cWKPPENYvixUprFdl3YPi4bZZUhDnNI9YUkacrv+uIG90dnxR5mNqaoD6UhD6Bw==
+
+tinyexec@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.0.tgz#ed60cfce19c17799d4a241e06b31b0ec2bee69e6"
+  integrity sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==
 
 tmp@^0.0.33:
   version "0.0.33"
@@ -6052,17 +6490,10 @@ tmp@^0.0.33:
   dependencies:
     os-tmpdir "~1.0.2"
 
-tmp@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
-  integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
-  dependencies:
-    rimraf "^3.0.0"
-
 to-fast-properties@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-  integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+  integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
 
 to-regex-range@^5.0.1:
   version "5.0.1"
@@ -6071,50 +6502,15 @@ to-regex-range@^5.0.1:
   dependencies:
     is-number "^7.0.0"
 
-tr46@~0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
-  integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-
-tree-kill@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
-  integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
-
-treeify@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8"
-  integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==
-
-treeverse@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f"
-  integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==
-
-trim-newlines@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
-  integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
-
-trim-newlines@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
-  integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=
-
-trim-newlines@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30"
-  integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==
-
-trim-off-newlines@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1"
-  integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg==
+ts-api-utils@^1.0.1, ts-api-utils@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
+  integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
 
-ts-node@^10.7.0, ts-node@^10.9.1:
-  version "10.9.1"
-  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
-  integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
+ts-node@^10.7.0:
+  version "10.9.2"
+  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
+  integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
   dependencies:
     "@cspotcode/source-map-support" "^0.8.0"
     "@tsconfig/node10" "^1.0.7"
@@ -6130,27 +6526,25 @@ ts-node@^10.7.0, ts-node@^10.9.1:
     v8-compile-cache-lib "^3.0.1"
     yn "3.1.1"
 
-tslib@^1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
-  integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
-
-tslib@^2, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.1, tslib@^2.5.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
-  integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
-
-tsutils@^3.21.0:
-  version "3.21.0"
-  resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
-  integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+tsconfig-paths@^3.15.0:
+  version "3.15.0"
+  resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
+  integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==
   dependencies:
-    tslib "^1.8.1"
+    "@types/json5" "^0.0.29"
+    json5 "^1.0.2"
+    minimist "^1.2.6"
+    strip-bom "^3.0.0"
+
+tslib@^2, tslib@^2.0.3, tslib@^2.6.2:
+  version "2.7.0"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
+  integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
 
 tunnel-agent@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
-  integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+  integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
   dependencies:
     safe-buffer "^5.0.1"
 
@@ -6161,15 +6555,15 @@ type-check@^0.4.0, type-check@~0.4.0:
   dependencies:
     prelude-ls "^1.2.1"
 
-type-detect@^4.0.0, type-detect@^4.0.3, type-detect@^4.0.5:
+type-detect@4.0.8:
   version "4.0.8"
   resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
   integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
 
-type-fest@^0.18.0:
-  version "0.18.1"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
-  integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
+type-detect@^4.0.0, type-detect@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c"
+  integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==
 
 type-fest@^0.20.2:
   version "0.20.2"
@@ -6186,11 +6580,55 @@ type-fest@^0.6.0:
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
   integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
 
-type-fest@^0.8.1:
+type-fest@^0.8.0, type-fest@^0.8.1:
   version "0.8.1"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
   integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
 
+typed-array-buffer@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
+  integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
+  dependencies:
+    call-bind "^1.0.7"
+    es-errors "^1.3.0"
+    is-typed-array "^1.1.13"
+
+typed-array-byte-length@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
+  integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
+  dependencies:
+    call-bind "^1.0.7"
+    for-each "^0.3.3"
+    gopd "^1.0.1"
+    has-proto "^1.0.3"
+    is-typed-array "^1.1.13"
+
+typed-array-byte-offset@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063"
+  integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
+  dependencies:
+    available-typed-arrays "^1.0.7"
+    call-bind "^1.0.7"
+    for-each "^0.3.3"
+    gopd "^1.0.1"
+    has-proto "^1.0.3"
+    is-typed-array "^1.1.13"
+
+typed-array-length@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3"
+  integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
+  dependencies:
+    call-bind "^1.0.7"
+    for-each "^0.3.3"
+    gopd "^1.0.1"
+    has-proto "^1.0.3"
+    is-typed-array "^1.1.13"
+    possible-typed-array-names "^1.0.0"
+
 typedarray-to-buffer@^3.1.5:
   version "3.1.5"
   resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
@@ -6198,15 +6636,10 @@ typedarray-to-buffer@^3.1.5:
   dependencies:
     is-typedarray "^1.0.0"
 
-typescript@4.5.5:
-  version "4.5.5"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
-  integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
-
-uglify-js@^3.1.4:
-  version "3.14.4"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.4.tgz#68756f17d1b90b9d289341736cb9a567d6882f90"
-  integrity sha512-AbiSR44J0GoCeV81+oxcy/jDOElO2Bx3d0MfQCUShq7JRXaM4KtQopZsq2vFv8bCq2yMaGrw1FgygUd03RyRDA==
+typescript@^5:
+  version "5.7.2"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6"
+  integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==
 
 unbox-primitive@^1.0.2:
   version "1.0.2"
@@ -6218,98 +6651,71 @@ unbox-primitive@^1.0.2:
     has-symbols "^1.0.3"
     which-boxed-primitive "^1.0.2"
 
-unique-filename@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
-  integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
-  dependencies:
-    unique-slug "^2.0.0"
+undici-types@~5.26.4:
+  version "5.26.5"
+  resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
+  integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
 
-unique-slug@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
-  integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
-  dependencies:
-    imurmurhash "^0.1.4"
+undici-types@~6.19.2:
+  version "6.19.8"
+  resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
+  integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
 
-universal-user-agent@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
-  integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+unicorn-magic@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4"
+  integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==
 
 universalify@^0.1.0:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
   integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
 
-universalify@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
-  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
-
-untildify@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
-  integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+update-browserslist-db@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
+  integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
+  dependencies:
+    escalade "^3.2.0"
+    picocolors "^1.1.0"
 
-uri-js@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
-  integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+upper-case-first@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324"
+  integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==
   dependencies:
-    punycode "^2.1.0"
+    tslib "^2.0.3"
 
-url@0.10.3:
-  version "0.10.3"
-  resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64"
-  integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=
+upper-case@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a"
+  integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==
   dependencies:
-    punycode "1.3.2"
-    querystring "0.2.0"
+    tslib "^2.0.3"
 
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-util@^0.12.4:
-  version "0.12.4"
-  resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253"
-  integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==
-  dependencies:
-    inherits "^2.0.3"
-    is-arguments "^1.0.4"
-    is-generator-function "^1.0.7"
-    is-typed-array "^1.1.3"
-    safe-buffer "^5.1.2"
-    which-typed-array "^1.1.2"
-
-uuid@8.0.0:
-  version "8.0.0"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c"
-  integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==
+uri-js@^4.2.2:
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+  integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+  dependencies:
+    punycode "^2.1.0"
 
-uuid@^3.3.2:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
-  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+uuid@^8.3.2:
+  version "8.3.2"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+  integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
 
-uuid@^8.3.0:
-  version "8.3.1"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
-  integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==
+uuid@^9.0.1:
+  version "9.0.1"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
+  integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
 
 v8-compile-cache-lib@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
   integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
 
-v8-compile-cache@^2.0.3:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
-  integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
-
-validate-npm-package-license@^3.0.1:
+validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
   integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
@@ -6317,60 +6723,10 @@ validate-npm-package-license@^3.0.1:
     spdx-correct "^3.0.0"
     spdx-expression-parse "^3.0.0"
 
-validate-npm-package-name@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
-  integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34=
-  dependencies:
-    builtins "^1.0.3"
-
-vinyl-file@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
-  integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=
-  dependencies:
-    graceful-fs "^4.1.2"
-    pify "^2.3.0"
-    strip-bom-buf "^1.0.0"
-    strip-bom-stream "^2.0.0"
-    vinyl "^2.0.1"
-
-vinyl@^2.0.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
-  integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
-  dependencies:
-    clone "^2.1.1"
-    clone-buffer "^1.0.0"
-    clone-stats "^1.0.0"
-    cloneable-readable "^1.0.0"
-    remove-trailing-separator "^1.0.1"
-    replace-ext "^1.0.0"
-
-walk-up-path@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e"
-  integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==
-
-wcwidth@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
-  integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
-  dependencies:
-    defaults "^1.0.3"
-
-webidl-conversions@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-  integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-
-whatwg-url@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
-  integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
-  dependencies:
-    tr46 "~0.0.3"
-    webidl-conversions "^3.0.0"
+validate-npm-package-name@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8"
+  integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==
 
 which-boxed-primitive@^1.0.2:
   version "1.0.2"
@@ -6384,51 +6740,28 @@ which-boxed-primitive@^1.0.2:
     is-symbol "^1.0.3"
 
 which-module@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-  integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which-pm@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae"
-  integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==
-  dependencies:
-    load-yaml-file "^0.2.0"
-    path-exists "^4.0.0"
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409"
+  integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
 
-which-typed-array@^1.1.2:
-  version "1.1.8"
-  resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f"
-  integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==
+which-typed-array@^1.1.14, which-typed-array@^1.1.15:
+  version "1.1.15"
+  resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
+  integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
   dependencies:
-    available-typed-arrays "^1.0.5"
-    call-bind "^1.0.2"
-    es-abstract "^1.20.0"
+    available-typed-arrays "^1.0.7"
+    call-bind "^1.0.7"
     for-each "^0.3.3"
-    has-tostringtag "^1.0.0"
-    is-typed-array "^1.1.9"
+    gopd "^1.0.1"
+    has-tostringtag "^1.0.2"
 
-which@2.0.2, which@^2.0.1, which@^2.0.2:
+which@^2.0.1:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
   integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   dependencies:
     isexe "^2.0.0"
 
-which@^1.2.9:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
-  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
-  dependencies:
-    isexe "^2.0.0"
-
-wide-align@^1.1.2:
-  version "1.1.5"
-  resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
-  integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
-  dependencies:
-    string-width "^1.0.2 || 2 || 3 || 4"
-
 widest-line@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
@@ -6436,37 +6769,20 @@ widest-line@^3.1.0:
   dependencies:
     string-width "^4.0.0"
 
-word-wrap@^1.2.3:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
-  integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+word-wrap@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+  integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
 
 wordwrap@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-  integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+  integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
 
-workerpool@6.2.0:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b"
-  integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==
-
-wrap-ansi@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
-  integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
-  dependencies:
-    string-width "^1.0.1"
-    strip-ansi "^3.0.1"
-
-wrap-ansi@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
-  integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
-  dependencies:
-    ansi-styles "^3.2.0"
-    string-width "^3.0.0"
-    strip-ansi "^5.0.0"
+workerpool@^6.5.1:
+  version "6.5.1"
+  resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544"
+  integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==
 
 wrap-ansi@^6.2.0:
   version "6.2.0"
@@ -6486,14 +6802,23 @@ wrap-ansi@^7.0.0:
     string-width "^4.1.0"
     strip-ansi "^6.0.0"
 
+wrap-ansi@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e"
+  integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==
+  dependencies:
+    ansi-styles "^6.2.1"
+    string-width "^7.0.0"
+    strip-ansi "^7.1.0"
+
 wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+  integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
 
-write-file-atomic@^3.0.0, write-file-atomic@^3.0.3:
+write-file-atomic@^3.0.0:
   version "3.0.3"
-  resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
   integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
   dependencies:
     imurmurhash "^0.1.4"
@@ -6501,75 +6826,45 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3:
     signal-exit "^3.0.2"
     typedarray-to-buffer "^3.1.5"
 
-write-json-file@*:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d"
-  integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==
-  dependencies:
-    detect-indent "^6.0.0"
-    graceful-fs "^4.1.15"
-    is-plain-obj "^2.0.0"
-    make-dir "^3.0.0"
-    sort-keys "^4.0.0"
-    write-file-atomic "^3.0.0"
-
-xml2js@0.4.19:
-  version "0.4.19"
-  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
-  integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
-  dependencies:
-    sax ">=0.6.0"
-    xmlbuilder "~9.0.1"
-
-xmlbuilder@~9.0.1:
-  version "9.0.7"
-  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
-  integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
-
-xtend@~4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-  integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
-
 y18n@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
   integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
 
 y18n@^5.0.5:
-  version "5.0.5"
-  resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
-  integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
+  version "5.0.8"
+  resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+  integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
 
-yallist@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
-  integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+yallist@^3.0.2:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+  integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
 
-yargs-parser@20.2.4:
-  version "20.2.4"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
-  integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
+yaml@~2.6.1:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773"
+  integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==
 
-yargs-parser@^15.0.0:
-  version "15.0.1"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3"
-  integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==
+yargs-parser@^18.1.2:
+  version "18.1.3"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+  integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
   dependencies:
     camelcase "^5.0.0"
     decamelize "^1.2.0"
 
-yargs-parser@^20.2.2, yargs-parser@^20.2.3:
-  version "20.2.7"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a"
-  integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==
+yargs-parser@^20.2.2, yargs-parser@^20.2.9:
+  version "20.2.9"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+  integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
 
-yargs-parser@^21.0.0:
+yargs-parser@^21.1.1:
   version "21.1.1"
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
   integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
 
-yargs-unparser@2.0.0:
+yargs-unparser@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
   integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
@@ -6579,24 +6874,24 @@ yargs-unparser@2.0.0:
     flat "^5.0.2"
     is-plain-obj "^2.1.0"
 
-yargs@14.2.0:
-  version "14.2.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3"
-  integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==
+yargs@^15.0.2:
+  version "15.4.1"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+  integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
   dependencies:
-    cliui "^5.0.0"
+    cliui "^6.0.0"
     decamelize "^1.2.0"
-    find-up "^3.0.0"
+    find-up "^4.1.0"
     get-caller-file "^2.0.1"
     require-directory "^2.1.1"
     require-main-filename "^2.0.0"
     set-blocking "^2.0.0"
-    string-width "^3.0.0"
+    string-width "^4.2.0"
     which-module "^2.0.0"
     y18n "^4.0.0"
-    yargs-parser "^15.0.0"
+    yargs-parser "^18.1.2"
 
-yargs@16.2.0:
+yargs@^16.2.0:
   version "16.2.0"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
   integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
@@ -6609,79 +6904,18 @@ yargs@16.2.0:
     y18n "^5.0.5"
     yargs-parser "^20.2.2"
 
-yargs@^17.3.1:
-  version "17.5.1"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e"
-  integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==
+yargs@^17.0.0:
+  version "17.7.2"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+  integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
   dependencies:
-    cliui "^7.0.2"
+    cliui "^8.0.1"
     escalade "^3.1.1"
     get-caller-file "^2.0.5"
     require-directory "^2.1.1"
     string-width "^4.2.3"
     y18n "^5.0.5"
-    yargs-parser "^21.0.0"
-
-yeoman-environment@^3.11.1:
-  version "3.11.1"
-  resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.11.1.tgz#7379489f0925a9e8cb619c0333629ba1ff8d4bbd"
-  integrity sha512-WxPntJFhdJiBtkaJOmkv/v5siWVJvLX2GB26TXMPaIgxHGhreKUwACI2jzjnsFcHv1F8Uayp668NZsz8ygalvg==
-  dependencies:
-    "@npmcli/arborist" "^4.0.4"
-    are-we-there-yet "^2.0.0"
-    arrify "^2.0.1"
-    binaryextensions "^4.15.0"
-    chalk "^4.1.0"
-    cli-table "^0.3.1"
-    commander "7.1.0"
-    dateformat "^4.5.0"
-    debug "^4.1.1"
-    diff "^5.0.0"
-    error "^10.4.0"
-    escape-string-regexp "^4.0.0"
-    execa "^5.0.0"
-    find-up "^5.0.0"
-    globby "^11.0.1"
-    grouped-queue "^2.0.0"
-    inquirer "^8.0.0"
-    is-scoped "^2.1.0"
-    isbinaryfile "^4.0.10"
-    lodash "^4.17.10"
-    log-symbols "^4.0.0"
-    mem-fs "^1.2.0 || ^2.0.0"
-    mem-fs-editor "^8.1.2 || ^9.0.0"
-    minimatch "^3.0.4"
-    npmlog "^5.0.1"
-    p-queue "^6.6.2"
-    p-transform "^1.3.0"
-    pacote "^12.0.2"
-    preferred-pm "^3.0.3"
-    pretty-bytes "^5.3.0"
-    semver "^7.1.3"
-    slash "^3.0.0"
-    strip-ansi "^6.0.0"
-    text-table "^0.2.0"
-    textextensions "^5.12.0"
-    untildify "^4.0.0"
-
-yeoman-generator@^5.6.1:
-  version "5.6.1"
-  resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-5.6.1.tgz#850fd266a5ab26d9d1cb9c46ad646f06eade4a1d"
-  integrity sha512-XllgFvmDEwoPMq2rKtL4/N52WlINJW6a3I3XtlCrMb3/dqO5dW0nPNgR0L3IIUIdf9y1EHb1ZFMs2Qp3ZEEFxg==
-  dependencies:
-    chalk "^4.1.0"
-    dargs "^7.0.0"
-    debug "^4.1.1"
-    execa "^4.1.0"
-    github-username "^6.0.0"
-    lodash "^4.17.11"
-    minimist "^1.2.5"
-    read-pkg-up "^7.0.1"
-    run-async "^2.0.0"
-    semver "^7.2.1"
-    shelljs "^0.8.5"
-    sort-keys "^4.2.0"
-    text-table "^0.2.0"
+    yargs-parser "^21.1.1"
 
 yn@3.1.1:
   version "3.1.1"
@@ -6693,17 +6927,12 @@ yocto-queue@^0.1.0:
   resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
   integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
 
-yosay@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/yosay/-/yosay-2.0.2.tgz#a7017e764cd88d64a1ae64812201de5b157adf6d"
-  integrity sha512-avX6nz2esp7IMXGag4gu6OyQBsMh/SEn+ZybGu3yKPlOTE6z9qJrzG/0X5vCq/e0rPFy0CUYCze0G5hL310ibA==
-  dependencies:
-    ansi-regex "^2.0.0"
-    ansi-styles "^3.0.0"
-    chalk "^1.0.0"
-    cli-boxes "^1.0.0"
-    pad-component "0.0.1"
-    string-width "^2.0.0"
-    strip-ansi "^3.0.0"
-    taketalk "^1.0.0"
-    wrap-ansi "^2.0.0"
+yocto-queue@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110"
+  integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==
+
+yoctocolors-cjs@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242"
+  integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==