From 7ccc528ac2a250749601913c1df8bf658d520c41 Mon Sep 17 00:00:00 2001 From: luca <681992+lukka@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:06:14 -0800 Subject: [PATCH] For CMake add Win32 ARM platform Bump uuid to v7+ --- dist/index.js | 26760 ++++++++++++++++++++++++------------ package-lock.json | 265 +- package.json | 5 +- src/releases-catalog.ts | 2 +- src/releases-collector.ts | 38 +- 5 files changed, 17869 insertions(+), 9201 deletions(-) diff --git a/dist/index.js b/dist/index.js index 7bd9fb4..f9329c4 100644 --- a/dist/index.js +++ b/dist/index.js @@ -392,7 +392,7 @@ exports.main = main; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.ninjaCatalog = exports.cmakeCatalog = void 0; -exports.cmakeCatalog = { "3.31.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-macos-universal.tar.gz", "fileName": "cmake-3.31.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-windows-x86_64.zip", "fileName": "cmake-3.31.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "latest": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-macos-universal.tar.gz", "fileName": "cmake-3.31.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-windows-x86_64.zip", "fileName": "cmake-3.31.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-linux-aarch64.tar.gz", "fileName": "cmake-3.31.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-linux-x86_64.tar.gz", "fileName": "cmake-3.31.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-macos-universal.tar.gz", "fileName": "cmake-3.31.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-windows-x86_64.zip", "fileName": "cmake-3.31.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-linux-aarch64.tar.gz", "fileName": "cmake-3.31.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-linux-x86_64.tar.gz", "fileName": "cmake-3.31.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-macos-universal.tar.gz", "fileName": "cmake-3.31.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-windows-x86_64.zip", "fileName": "cmake-3.31.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-linux-aarch64.tar.gz", "fileName": "cmake-3.30.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-linux-x86_64.tar.gz", "fileName": "cmake-3.30.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-macos-universal.tar.gz", "fileName": "cmake-3.30.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-windows-x86_64.zip", "fileName": "cmake-3.30.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.9": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-linux-aarch64.tar.gz", "fileName": "cmake-3.29.9-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-linux-x86_64.tar.gz", "fileName": "cmake-3.29.9-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-macos-universal.tar.gz", "fileName": "cmake-3.29.9-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-windows-x86_64.zip", "fileName": "cmake-3.29.9-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-macos-universal.tar.gz", "fileName": "cmake-3.31.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-windows-x86_64.zip", "fileName": "cmake-3.31.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "latestrc": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-linux-aarch64.tar.gz", "fileName": "cmake-3.30.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-linux-x86_64.tar.gz", "fileName": "cmake-3.30.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-macos-universal.tar.gz", "fileName": "cmake-3.30.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-windows-x86_64.zip", "fileName": "cmake-3.30.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-linux-aarch64.tar.gz", "fileName": "cmake-3.30.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-linux-x86_64.tar.gz", "fileName": "cmake-3.30.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-macos-universal.tar.gz", "fileName": "cmake-3.30.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-windows-x86_64.zip", "fileName": "cmake-3.30.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-aarch64.tar.gz", "fileName": "cmake-3.30.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-x86_64.tar.gz", "fileName": "cmake-3.30.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-macos-universal.tar.gz", "fileName": "cmake-3.30.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-windows-x86_64.zip", "fileName": "cmake-3.30.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.8": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-linux-aarch64.tar.gz", "fileName": "cmake-3.29.8-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-linux-x86_64.tar.gz", "fileName": "cmake-3.29.8-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-macos-universal.tar.gz", "fileName": "cmake-3.29.8-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-windows-x86_64.zip", "fileName": "cmake-3.29.8-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-aarch64.tar.gz", "fileName": "cmake-3.30.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz", "fileName": "cmake-3.30.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-macos-universal.tar.gz", "fileName": "cmake-3.30.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-windows-x86_64.zip", "fileName": "cmake-3.30.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-linux-aarch64.tar.gz", "fileName": "cmake-3.30.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-linux-x86_64.tar.gz", "fileName": "cmake-3.30.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-macos-universal.tar.gz", "fileName": "cmake-3.30.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-windows-x86_64.zip", "fileName": "cmake-3.30.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-linux-aarch64.tar.gz", "fileName": "cmake-3.29.7-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-linux-x86_64.tar.gz", "fileName": "cmake-3.29.7-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-macos-universal.tar.gz", "fileName": "cmake-3.29.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-windows-x86_64.zip", "fileName": "cmake-3.29.7-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-macos-universal.tar.gz", "fileName": "cmake-3.30.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-windows-x86_64.zip", "fileName": "cmake-3.30.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-linux-aarch64.tar.gz", "fileName": "cmake-3.29.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-linux-x86_64.tar.gz", "fileName": "cmake-3.29.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-macos-universal.tar.gz", "fileName": "cmake-3.29.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-windows-x86_64.zip", "fileName": "cmake-3.29.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-linux-aarch64.tar.gz", "fileName": "cmake-3.29.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-linux-x86_64.tar.gz", "fileName": "cmake-3.29.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-macos-universal.tar.gz", "fileName": "cmake-3.29.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-windows-x86_64.zip", "fileName": "cmake-3.29.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-linux-aarch64.tar.gz", "fileName": "cmake-3.29.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-linux-x86_64.tar.gz", "fileName": "cmake-3.29.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-macos-universal.tar.gz", "fileName": "cmake-3.29.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-windows-x86_64.zip", "fileName": "cmake-3.29.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-linux-aarch64.tar.gz", "fileName": "cmake-3.28.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-linux-x86_64.tar.gz", "fileName": "cmake-3.28.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-macos-universal.tar.gz", "fileName": "cmake-3.28.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-windows-x86_64.zip", "fileName": "cmake-3.28.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-linux-aarch64.tar.gz", "fileName": "cmake-3.29.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-linux-x86_64.tar.gz", "fileName": "cmake-3.29.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-macos-universal.tar.gz", "fileName": "cmake-3.29.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-windows-x86_64.zip", "fileName": "cmake-3.29.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-aarch64.tar.gz", "fileName": "cmake-3.28.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.tar.gz", "fileName": "cmake-3.28.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-macos-universal.tar.gz", "fileName": "cmake-3.28.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-windows-x86_64.zip", "fileName": "cmake-3.28.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-aarch64.tar.gz", "fileName": "cmake-3.29.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.tar.gz", "fileName": "cmake-3.29.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-macos-universal.tar.gz", "fileName": "cmake-3.29.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-windows-x86_64.zip", "fileName": "cmake-3.29.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-linux-aarch64.tar.gz", "fileName": "cmake-3.29.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-linux-x86_64.tar.gz", "fileName": "cmake-3.29.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-macos-universal.tar.gz", "fileName": "cmake-3.29.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-windows-x86_64.zip", "fileName": "cmake-3.29.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-macos-universal.tar.gz", "fileName": "cmake-3.29.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-windows-x86_64.zip", "fileName": "cmake-3.29.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-linux-aarch64.tar.gz", "fileName": "cmake-3.28.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-linux-x86_64.tar.gz", "fileName": "cmake-3.28.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-macos-universal.tar.gz", "fileName": "cmake-3.28.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-windows-x86_64.zip", "fileName": "cmake-3.28.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-aarch64.tar.gz", "fileName": "cmake-3.28.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz", "fileName": "cmake-3.28.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-macos-universal.tar.gz", "fileName": "cmake-3.28.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-windows-x86_64.zip", "fileName": "cmake-3.28.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-linux-aarch64.tar.gz", "fileName": "cmake-3.28.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-linux-x86_64.tar.gz", "fileName": "cmake-3.28.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-macos-universal.tar.gz", "fileName": "cmake-3.28.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-windows-x86_64.zip", "fileName": "cmake-3.28.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-aarch64.tar.gz", "fileName": "cmake-3.28.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-x86_64.tar.gz", "fileName": "cmake-3.28.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-macos-universal.tar.gz", "fileName": "cmake-3.28.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-windows-x86_64.zip", "fileName": "cmake-3.28.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-macos-universal.tar.gz", "fileName": "cmake-3.28.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-windows-x86_64.zip", "fileName": "cmake-3.28.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.9": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-linux-aarch64.tar.gz", "fileName": "cmake-3.27.9-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-linux-x86_64.tar.gz", "fileName": "cmake-3.27.9-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-macos-universal.tar.gz", "fileName": "cmake-3.27.9-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-windows-x86_64.zip", "fileName": "cmake-3.27.9-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-linux-aarch64.tar.gz", "fileName": "cmake-3.26.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-linux-x86_64.tar.gz", "fileName": "cmake-3.26.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-macos-universal.tar.gz", "fileName": "cmake-3.26.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-windows-x86_64.zip", "fileName": "cmake-3.26.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.8": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-linux-aarch64.tar.gz", "fileName": "cmake-3.27.8-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-linux-x86_64.tar.gz", "fileName": "cmake-3.27.8-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-macos-universal.tar.gz", "fileName": "cmake-3.27.8-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-windows-x86_64.zip", "fileName": "cmake-3.27.8-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-linux-aarch64.tar.gz", "fileName": "cmake-3.27.7-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-linux-x86_64.tar.gz", "fileName": "cmake-3.27.7-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-macos-universal.tar.gz", "fileName": "cmake-3.27.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-x86_64.zip", "fileName": "cmake-3.27.7-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-aarch64.tar.gz", "fileName": "cmake-3.27.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.tar.gz", "fileName": "cmake-3.27.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-macos-universal.tar.gz", "fileName": "cmake-3.27.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-windows-x86_64.zip", "fileName": "cmake-3.27.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-linux-aarch64.tar.gz", "fileName": "cmake-3.27.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-linux-x86_64.tar.gz", "fileName": "cmake-3.27.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-macos-universal.tar.gz", "fileName": "cmake-3.27.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-windows-x86_64.zip", "fileName": "cmake-3.27.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-linux-aarch64.tar.gz", "fileName": "cmake-3.27.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-linux-x86_64.tar.gz", "fileName": "cmake-3.27.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-macos-universal.tar.gz", "fileName": "cmake-3.27.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-windows-x86_64.zip", "fileName": "cmake-3.27.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-linux-aarch64.tar.gz", "fileName": "cmake-3.27.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-linux-x86_64.tar.gz", "fileName": "cmake-3.27.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-macos-universal.tar.gz", "fileName": "cmake-3.27.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-windows-x86_64.zip", "fileName": "cmake-3.27.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-aarch64.tar.gz", "fileName": "cmake-3.27.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-x86_64.tar.gz", "fileName": "cmake-3.27.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-macos-universal.tar.gz", "fileName": "cmake-3.27.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-windows-x86_64.zip", "fileName": "cmake-3.27.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-linux-aarch64.tar.gz", "fileName": "cmake-3.27.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-linux-x86_64.tar.gz", "fileName": "cmake-3.27.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-macos-universal.tar.gz", "fileName": "cmake-3.27.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-windows-x86_64.zip", "fileName": "cmake-3.27.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-linux-aarch64.tar.gz", "fileName": "cmake-3.26.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-linux-x86_64.tar.gz", "fileName": "cmake-3.26.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-macos-universal.tar.gz", "fileName": "cmake-3.26.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-windows-x86_64.zip", "fileName": "cmake-3.26.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-macos-universal.tar.gz", "fileName": "cmake-3.27.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-windows-x86_64.zip", "fileName": "cmake-3.27.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-aarch64.tar.gz", "fileName": "cmake-3.26.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.tar.gz", "fileName": "cmake-3.26.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-macos-universal.tar.gz", "fileName": "cmake-3.26.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-windows-x86_64.zip", "fileName": "cmake-3.26.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-linux-aarch64.tar.gz", "fileName": "cmake-3.26.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-linux-x86_64.tar.gz", "fileName": "cmake-3.26.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-macos-universal.tar.gz", "fileName": "cmake-3.26.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-windows-x86_64.zip", "fileName": "cmake-3.26.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-aarch64.tar.gz", "fileName": "cmake-3.26.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-x86_64.tar.gz", "fileName": "cmake-3.26.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-macos-universal.tar.gz", "fileName": "cmake-3.26.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-windows-x86_64.zip", "fileName": "cmake-3.26.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-linux-aarch64.tar.gz", "fileName": "cmake-3.26.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-linux-x86_64.tar.gz", "fileName": "cmake-3.26.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-macos-universal.tar.gz", "fileName": "cmake-3.26.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-windows-x86_64.zip", "fileName": "cmake-3.26.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-macos-universal.tar.gz", "fileName": "cmake-3.26.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-windows-x86_64.zip", "fileName": "cmake-3.26.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-linux-aarch64.tar.gz", "fileName": "cmake-3.25.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-linux-x86_64.tar.gz", "fileName": "cmake-3.25.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-macos-universal.tar.gz", "fileName": "cmake-3.25.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-windows-x86_64.zip", "fileName": "cmake-3.25.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-linux-aarch64.tar.gz", "fileName": "cmake-3.24.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-linux-x86_64.tar.gz", "fileName": "cmake-3.24.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-macos-universal.tar.gz", "fileName": "cmake-3.24.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-windows-x86_64.zip", "fileName": "cmake-3.24.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-aarch64.tar.gz", "fileName": "cmake-3.25.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz", "fileName": "cmake-3.25.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-macos-universal.tar.gz", "fileName": "cmake-3.25.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-windows-x86_64.zip", "fileName": "cmake-3.25.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-aarch64.tar.gz", "fileName": "cmake-3.25.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-x86_64.tar.gz", "fileName": "cmake-3.25.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-macos-universal.tar.gz", "fileName": "cmake-3.25.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-x86_64.zip", "fileName": "cmake-3.25.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-macos-universal.tar.gz", "fileName": "cmake-3.25.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-windows-x86_64.zip", "fileName": "cmake-3.25.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-linux-aarch64.tar.gz", "fileName": "cmake-3.24.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-linux-x86_64.tar.gz", "fileName": "cmake-3.24.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-macos-universal.tar.gz", "fileName": "cmake-3.24.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-windows-x86_64.zip", "fileName": "cmake-3.24.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-aarch64.tar.gz", "fileName": "cmake-3.23.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-x86_64.tar.gz", "fileName": "cmake-3.23.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-macos-universal.tar.gz", "fileName": "cmake-3.23.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-windows-x86_64.zip", "fileName": "cmake-3.23.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-linux-aarch64.tar.gz", "fileName": "cmake-3.23.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-linux-x86_64.tar.gz", "fileName": "cmake-3.23.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-macos-universal.tar.gz", "fileName": "cmake-3.23.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-windows-x86_64.zip", "fileName": "cmake-3.23.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-aarch64.tar.gz", "fileName": "cmake-3.24.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.tar.gz", "fileName": "cmake-3.24.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-macos-universal.tar.gz", "fileName": "cmake-3.24.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-windows-x86_64.zip", "fileName": "cmake-3.24.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-linux-aarch64.tar.gz", "fileName": "cmake-3.24.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-linux-x86_64.tar.gz", "fileName": "cmake-3.24.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-macos-universal.tar.gz", "fileName": "cmake-3.24.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-windows-x86_64.zip", "fileName": "cmake-3.24.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-macos-universal.tar.gz", "fileName": "cmake-3.24.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-windows-x86_64.zip", "fileName": "cmake-3.24.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-linux-aarch64.tar.gz", "fileName": "cmake-3.23.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-linux-x86_64.tar.gz", "fileName": "cmake-3.23.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-macos-universal.tar.gz", "fileName": "cmake-3.23.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-windows-x86_64.zip", "fileName": "cmake-3.23.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-linux-aarch64.tar.gz", "fileName": "cmake-3.22.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-linux-x86_64.tar.gz", "fileName": "cmake-3.22.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-macos-universal.tar.gz", "fileName": "cmake-3.22.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-windows-x86_64.zip", "fileName": "cmake-3.22.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-linux-aarch64.tar.gz", "fileName": "cmake-3.22.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-linux-x86_64.tar.gz", "fileName": "cmake-3.22.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-macos-universal.tar.gz", "fileName": "cmake-3.22.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-windows-x86_64.zip", "fileName": "cmake-3.22.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-linux-aarch64.tar.gz", "fileName": "cmake-3.21.7-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-linux-x86_64.tar.gz", "fileName": "cmake-3.21.7-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-macos-universal.tar.gz", "fileName": "cmake-3.21.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-windows-x86_64.zip", "fileName": "cmake-3.21.7-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-aarch64.tar.gz", "fileName": "cmake-3.23.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.tar.gz", "fileName": "cmake-3.23.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-macos-universal.tar.gz", "fileName": "cmake-3.23.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-x86_64.zip", "fileName": "cmake-3.23.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-aarch64.tar.gz", "fileName": "cmake-3.23.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz", "fileName": "cmake-3.23.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-macos-universal.tar.gz", "fileName": "cmake-3.23.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-windows-x86_64.zip", "fileName": "cmake-3.23.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-linux-aarch64.tar.gz", "fileName": "cmake-3.22.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-linux-x86_64.tar.gz", "fileName": "cmake-3.22.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-macos-universal.tar.gz", "fileName": "cmake-3.22.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-windows-x86_64.zip", "fileName": "cmake-3.22.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-macos-universal.tar.gz", "fileName": "cmake-3.23.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-windows-x86_64.zip", "fileName": "cmake-3.23.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-linux-aarch64.tar.gz", "fileName": "cmake-3.22.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-linux-x86_64.tar.gz", "fileName": "cmake-3.22.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-macos-universal.tar.gz", "fileName": "cmake-3.22.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-windows-x86_64.zip", "fileName": "cmake-3.22.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-linux-aarch64.tar.gz", "fileName": "cmake-3.21.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-linux-x86_64.tar.gz", "fileName": "cmake-3.21.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-macos-universal.tar.gz", "fileName": "cmake-3.21.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-windows-x86_64.zip", "fileName": "cmake-3.21.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-linux-aarch64.tar.gz", "fileName": "cmake-3.21.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-linux-x86_64.tar.gz", "fileName": "cmake-3.21.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-macos-universal.tar.gz", "fileName": "cmake-3.21.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-windows-x86_64.zip", "fileName": "cmake-3.21.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-linux-aarch64.tar.gz", "fileName": "cmake-3.22.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-linux-x86_64.tar.gz", "fileName": "cmake-3.22.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-macos-universal.tar.gz", "fileName": "cmake-3.22.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-windows-x86_64.zip", "fileName": "cmake-3.22.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-linux-aarch64.tar.gz", "fileName": "cmake-3.22.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-linux-x86_64.tar.gz", "fileName": "cmake-3.22.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-macos-universal.tar.gz", "fileName": "cmake-3.22.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-windows-x86_64.zip", "fileName": "cmake-3.22.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-macos-universal.tar.gz", "fileName": "cmake-3.22.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-windows-x86_64.zip", "fileName": "cmake-3.22.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.22.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.22.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.22.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.22.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-aarch64.tar.gz", "fileName": "cmake-3.21.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.tar.gz", "fileName": "cmake-3.21.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-macos-universal.tar.gz", "fileName": "cmake-3.21.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-windows-x86_64.zip", "fileName": "cmake-3.21.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.22.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.22.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-aarch64.tar.gz", "fileName": "cmake-3.21.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-x86_64.tar.gz", "fileName": "cmake-3.21.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-macos-universal.tar.gz", "fileName": "cmake-3.21.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-windows-x86_64.zip", "fileName": "cmake-3.21.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-aarch64.tar.gz", "fileName": "cmake-3.20.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-x86_64.tar.gz", "fileName": "cmake-3.20.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-macos-universal.tar.gz", "fileName": "cmake-3.20.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-windows-x86_64.zip", "fileName": "cmake-3.20.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-aarch64.tar.gz", "fileName": "cmake-3.21.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-x86_64.tar.gz", "fileName": "cmake-3.21.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-macos-universal.tar.gz", "fileName": "cmake-3.21.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-windows-x86_64.zip", "fileName": "cmake-3.21.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-aarch64.tar.gz", "fileName": "cmake-3.21.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-x86_64.tar.gz", "fileName": "cmake-3.21.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-macos-universal.tar.gz", "fileName": "cmake-3.21.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-windows-x86_64.zip", "fileName": "cmake-3.21.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-macos-universal.tar.gz", "fileName": "cmake-3.21.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-windows-x86_64.zip", "fileName": "cmake-3.21.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.21.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.21.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.21.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.21.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.21.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.21.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-linux-aarch64.tar.gz", "fileName": "cmake-3.20.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-linux-x86_64.tar.gz", "fileName": "cmake-3.20.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-macos-universal.tar.gz", "fileName": "cmake-3.20.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-windows-x86_64.zip", "fileName": "cmake-3.20.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-linux-aarch64.tar.gz", "fileName": "cmake-3.20.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-linux-x86_64.tar.gz", "fileName": "cmake-3.20.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-macos-universal.tar.gz", "fileName": "cmake-3.20.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-windows-x86_64.zip", "fileName": "cmake-3.20.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-linux-aarch64.tar.gz", "fileName": "cmake-3.20.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-linux-x86_64.tar.gz", "fileName": "cmake-3.20.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-macos-universal.tar.gz", "fileName": "cmake-3.20.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-windows-x86_64.zip", "fileName": "cmake-3.20.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-linux-aarch64.tar.gz", "fileName": "cmake-3.20.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-linux-x86_64.tar.gz", "fileName": "cmake-3.20.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-macos-universal.tar.gz", "fileName": "cmake-3.20.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-windows-x86_64.zip", "fileName": "cmake-3.20.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-linux-aarch64.tar.gz", "fileName": "cmake-3.20.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-linux-x86_64.tar.gz", "fileName": "cmake-3.20.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-macos-universal.tar.gz", "fileName": "cmake-3.20.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-windows-x86_64.zip", "fileName": "cmake-3.20.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.8": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.8-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.8-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-macos-universal.tar.gz", "fileName": "cmake-3.19.8-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-win64-x64.zip", "fileName": "cmake-3.19.8-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-macos-universal.tar.gz", "fileName": "cmake-3.20.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-windows-x86_64.zip", "fileName": "cmake-3.20.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.7-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-macos-universal.tar.gz", "fileName": "cmake-3.19.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-win64-x64.zip", "fileName": "cmake-3.19.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.6-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-macos-universal.tar.gz", "fileName": "cmake-3.19.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-win64-x64.zip", "fileName": "cmake-3.19.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.5-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-macos-universal.tar.gz", "fileName": "cmake-3.19.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-win64-x64.zip", "fileName": "cmake-3.19.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-win64-x64.zip", "fileName": "cmake-3.18.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.4-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-macos-universal.tar.gz", "fileName": "cmake-3.19.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-win64-x64.zip", "fileName": "cmake-3.19.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.3-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-macos-universal.tar.gz", "fileName": "cmake-3.19.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-win64-x64.zip", "fileName": "cmake-3.19.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-macos-universal.tar.gz", "fileName": "cmake-3.19.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-win64-x64.zip", "fileName": "cmake-3.19.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1-win64-x64.zip", "fileName": "cmake-3.19.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-win64-x64.zip", "fileName": "cmake-3.19.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-win64-x64.zip", "fileName": "cmake-3.18.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3-win64-x64.zip", "fileName": "cmake-3.19.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc2/cmake-3.19.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc2/cmake-3.19.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc2/cmake-3.19.0-rc2-win64-x64.zip", "fileName": "cmake-3.19.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc1/cmake-3.19.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc1/cmake-3.19.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc1/cmake-3.19.0-rc1-win64-x64.zip", "fileName": "cmake-3.19.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-win64-x64.zip", "fileName": "cmake-3.18.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-win64-x64.zip", "fileName": "cmake-3.18.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-win64-x64.zip", "fileName": "cmake-3.17.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.9": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.9/cmake-3.16.9-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.9-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.9/cmake-3.16.9-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.9-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.9/cmake-3.16.9-win64-x64.zip", "fileName": "cmake-3.16.9-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-win64-x64.zip", "fileName": "cmake-3.18.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-win64-x64.zip", "fileName": "cmake-3.18.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.4/cmake-3.17.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.4/cmake-3.17.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.4/cmake-3.17.4-win64-x64.zip", "fileName": "cmake-3.17.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-win64-x64.zip", "fileName": "cmake-3.18.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc4/cmake-3.18.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc4/cmake-3.18.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc4/cmake-3.18.0-rc4-win64-x64.zip", "fileName": "cmake-3.18.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc3/cmake-3.18.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc3/cmake-3.18.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc3/cmake-3.18.0-rc3-win64-x64.zip", "fileName": "cmake-3.18.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2-win64-x64.zip", "fileName": "cmake-3.18.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1-win64-x64.zip", "fileName": "cmake-3.18.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.8": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.8-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.8-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8-win64-x64.zip", "fileName": "cmake-3.16.8-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3-win64-x64.zip", "fileName": "cmake-3.17.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.7": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.7/cmake-3.16.7-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.7-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.7/cmake-3.16.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.7/cmake-3.16.7-win64-x64.zip", "fileName": "cmake-3.16.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-win64-x64.zip", "fileName": "cmake-3.17.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.6/cmake-3.16.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.6/cmake-3.16.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.6/cmake-3.16.6-win64-x64.zip", "fileName": "cmake-3.16.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-win64-x64.zip", "fileName": "cmake-3.17.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-win64-x64.zip", "fileName": "cmake-3.17.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3-win64-x64.zip", "fileName": "cmake-3.17.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-win64-x64.zip", "fileName": "cmake-3.16.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc2/cmake-3.17.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc2/cmake-3.17.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc2/cmake-3.17.0-rc2-win64-x64.zip", "fileName": "cmake-3.17.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc1/cmake-3.17.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc1/cmake-3.17.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc1/cmake-3.17.0-rc1-win64-x64.zip", "fileName": "cmake-3.17.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-win64-x64.zip", "fileName": "cmake-3.16.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.7": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.7-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-win64-x64.zip", "fileName": "cmake-3.15.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3-win64-x64.zip", "fileName": "cmake-3.16.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-win64-x64.zip", "fileName": "cmake-3.16.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-win64-x64.zip", "fileName": "cmake-3.15.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-win64-x64.zip", "fileName": "cmake-3.16.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0-win64-x64.zip", "fileName": "cmake-3.16.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc4/cmake-3.16.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc4/cmake-3.16.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc4/cmake-3.16.0-rc4-win64-x64.zip", "fileName": "cmake-3.16.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-win64-x64.zip", "fileName": "cmake-3.16.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-win64-x64.zip", "fileName": "cmake-3.15.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-win64-x64.zip", "fileName": "cmake-3.16.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1-win64-x64.zip", "fileName": "cmake-3.16.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-win64-x64.zip", "fileName": "cmake-3.15.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.7": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.7-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-win64-x64.zip", "fileName": "cmake-3.14.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-win64-x64.zip", "fileName": "cmake-3.15.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-win64-x64.zip", "fileName": "cmake-3.15.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1-win64-x64.zip", "fileName": "cmake-3.15.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0-win64-x64.zip", "fileName": "cmake-3.15.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-win64-x64.zip", "fileName": "cmake-3.14.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc4/cmake-3.15.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc4/cmake-3.15.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc4/cmake-3.15.0-rc4-win64-x64.zip", "fileName": "cmake-3.15.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc3/cmake-3.15.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc3/cmake-3.15.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc3/cmake-3.15.0-rc3-win64-x64.zip", "fileName": "cmake-3.15.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc2/cmake-3.15.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc2/cmake-3.15.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc2/cmake-3.15.0-rc2-win64-x64.zip", "fileName": "cmake-3.15.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc1/cmake-3.15.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc1/cmake-3.15.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc1/cmake-3.15.0-rc1-win64-x64.zip", "fileName": "cmake-3.15.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-win64-x64.zip", "fileName": "cmake-3.14.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-win64-x64.zip", "fileName": "cmake-3.14.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.13.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.5/cmake-3.13.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.5/cmake-3.13.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.5/cmake-3.13.5-win64-x64.zip", "fileName": "cmake-3.13.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-win64-x64.zip", "fileName": "cmake-3.14.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2-win64-x64.zip", "fileName": "cmake-3.14.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1-win64-x64.zip", "fileName": "cmake-3.14.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.14.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-win64-x64.zip", "fileName": "cmake-3.14.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.14.0-rc4": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4-win64-x64.zip", "fileName": "cmake-3.14.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.14.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc3/cmake-3.14.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc3/cmake-3.14.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc3/cmake-3.14.0-rc3-win32-x86.zip", "fileName": "cmake-3.14.0-rc3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc2/cmake-3.14.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc2/cmake-3.14.0-rc2-win64-x64.zip", "fileName": "cmake-3.14.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc2/cmake-3.14.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.14.0-rc1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc1/cmake-3.14.0-rc1-win32-x86.zip", "fileName": "cmake-3.14.0-rc1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc1/cmake-3.14.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc1/cmake-3.14.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.13.4": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-win32-x86.zip", "fileName": "cmake-3.13.4-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.13.3": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3-win64-x64.zip", "fileName": "cmake-3.13.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.13.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-win64-x64.zip", "fileName": "cmake-3.13.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.13.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-win64-x64.zip", "fileName": "cmake-3.13.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.13.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-win64-x64.zip", "fileName": "cmake-3.13.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.12.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-win64-x64.zip", "fileName": "cmake-3.12.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.12.3": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.3/cmake-3.12.3-win64-x64.zip", "fileName": "cmake-3.12.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.3/cmake-3.12.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.3/cmake-3.12.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.12.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.2/cmake-3.12.2-win64-x64.zip", "fileName": "cmake-3.12.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.2/cmake-3.12.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.2/cmake-3.12.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.12.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.1/cmake-3.12.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.1/cmake-3.12.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.1/cmake-3.12.1-win32-x86.zip", "fileName": "cmake-3.12.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.12.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.0/cmake-3.12.0-win32-x86.zip", "fileName": "cmake-3.12.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.0/cmake-3.12.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.0/cmake-3.12.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.11.4": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.4/cmake-3.11.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.4/cmake-3.11.4-win32-x86.zip", "fileName": "cmake-3.11.4-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.4/cmake-3.11.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.11.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.3/cmake-3.11.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.3/cmake-3.11.3-win32-x86.zip", "fileName": "cmake-3.11.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.3/cmake-3.11.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.11.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.2/cmake-3.11.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.2/cmake-3.11.2-win32-x86.zip", "fileName": "cmake-3.11.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.2/cmake-3.11.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.11.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.1/cmake-3.11.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.1/cmake-3.11.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.1/cmake-3.11.1-win64-x64.zip", "fileName": "cmake-3.11.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.11.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.0/cmake-3.11.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.0/cmake-3.11.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.0/cmake-3.11.0-win32-x86.zip", "fileName": "cmake-3.11.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.10.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-win32-x86.zip", "fileName": "cmake-3.10.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.10.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.2/cmake-3.10.2-win64-x64.zip", "fileName": "cmake-3.10.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.2/cmake-3.10.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.2/cmake-3.10.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.10.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.1/cmake-3.10.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.1/cmake-3.10.1-win64-x64.zip", "fileName": "cmake-3.10.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.1/cmake-3.10.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.10.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0-win32-x86.zip", "fileName": "cmake-3.10.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.6": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.6/cmake-3.9.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.6/cmake-3.9.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.6/cmake-3.9.6-win64-x64.zip", "fileName": "cmake-3.9.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.9.5": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.5/cmake-3.9.5-win32-x86.zip", "fileName": "cmake-3.9.5-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.5/cmake-3.9.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.5/cmake-3.9.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.4": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.4/cmake-3.9.4-win64-x64.zip", "fileName": "cmake-3.9.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.4/cmake-3.9.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.4/cmake-3.9.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.3/cmake-3.9.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.3/cmake-3.9.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.3/cmake-3.9.3-win64-x64.zip", "fileName": "cmake-3.9.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.9.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.2/cmake-3.9.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.2/cmake-3.9.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.2/cmake-3.9.2-win64-x64.zip", "fileName": "cmake-3.9.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.9.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.1/cmake-3.9.1-win32-x86.zip", "fileName": "cmake-3.9.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.1/cmake-3.9.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.1/cmake-3.9.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.0/cmake-3.9.0-win32-x86.zip", "fileName": "cmake-3.9.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.0/cmake-3.9.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.0/cmake-3.9.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.8.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.2/cmake-3.8.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.8.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.2/cmake-3.8.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.8.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.2/cmake-3.8.2-win64-x64.zip", "fileName": "cmake-3.8.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.8.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.1/cmake-3.8.1-win64-x64.zip", "fileName": "cmake-3.8.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.1/cmake-3.8.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.8.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.1/cmake-3.8.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.8.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.8.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.0/cmake-3.8.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.8.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.0/cmake-3.8.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.8.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.0/cmake-3.8.0-win64-x64.zip", "fileName": "cmake-3.8.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.7.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.2/cmake-3.7.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.7.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.2/cmake-3.7.2-win64-x64.zip", "fileName": "cmake-3.7.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.2/cmake-3.7.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.7.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.7.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.1/cmake-3.7.1-win64-x64.zip", "fileName": "cmake-3.7.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.1/cmake-3.7.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.7.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.1/cmake-3.7.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.7.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.7.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.0/cmake-3.7.0-win64-x64.zip", "fileName": "cmake-3.7.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.0/cmake-3.7.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.7.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.0/cmake-3.7.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.7.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.6.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.3/cmake-3.6.3-Linux-i386.tar.gz", "fileName": "cmake-3.6.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.3/cmake-3.6.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.3/cmake-3.6.3-win32-x86.zip", "fileName": "cmake-3.6.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.6.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.2/cmake-3.6.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.2/cmake-3.6.2-Linux-i386.tar.gz", "fileName": "cmake-3.6.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.2/cmake-3.6.2-win64-x64.zip", "fileName": "cmake-3.6.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.6.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.1/cmake-3.6.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.6.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.1/cmake-3.6.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.1/cmake-3.6.1-win32-x86.zip", "fileName": "cmake-3.6.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.6.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-win64-x64.zip", "fileName": "cmake-3.6.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-Linux-i386.tar.gz", "fileName": "cmake-3.6.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.5.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.2/cmake-3.5.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.5.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.2/cmake-3.5.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.5.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.2/cmake-3.5.2-win32-x86.zip", "fileName": "cmake-3.5.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.5.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1-Linux-i386.tar.gz", "fileName": "cmake-3.5.1-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1-win32-x86.zip", "fileName": "cmake-3.5.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.5.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.5.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.0/cmake-3.5.0-win32-x86.zip", "fileName": "cmake-3.5.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.0/cmake-3.5.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.5.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.0/cmake-3.5.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.5.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.4.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.3/cmake-3.4.3-Linux-i386.tar.gz", "fileName": "cmake-3.4.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.3/cmake-3.4.3-win32-x86.zip", "fileName": "cmake-3.4.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.3/cmake-3.4.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.4.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.4.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.2/cmake-3.4.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.4.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.2/cmake-3.4.2-Linux-i386.tar.gz", "fileName": "cmake-3.4.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.2/cmake-3.4.2-win32-x86.zip", "fileName": "cmake-3.4.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.4.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.1/cmake-3.4.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.4.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.1/cmake-3.4.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.4.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.1/cmake-3.4.1-win32-x86.zip", "fileName": "cmake-3.4.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.4.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.0/cmake-3.4.0-win32-x86.zip", "fileName": "cmake-3.4.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.0/cmake-3.4.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.4.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.3.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.2/cmake-3.3.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.3.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.2/cmake-3.3.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.3.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.2/cmake-3.3.2-win32-x86.zip", "fileName": "cmake-3.3.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.3.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.1/cmake-3.3.1-win32-x86.zip", "fileName": "cmake-3.3.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.1/cmake-3.3.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.3.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.1/cmake-3.3.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.3.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.3.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.0/cmake-3.3.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.3.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.0/cmake-3.3.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.3.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.0/cmake-3.3.0-win32-x86.zip", "fileName": "cmake-3.3.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.2.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.3/cmake-3.2.3-Linux-i386.tar.gz", "fileName": "cmake-3.2.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.3/cmake-3.2.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.3/cmake-3.2.3-win32-x86.zip", "fileName": "cmake-3.2.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.2.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.2/cmake-3.2.2-win32-x86.zip", "fileName": "cmake-3.2.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.2/cmake-3.2.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.2/cmake-3.2.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.2.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.2.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.1/cmake-3.2.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.1/cmake-3.2.1-win32-x86.zip", "fileName": "cmake-3.2.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.1/cmake-3.2.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.2.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.2.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.0/cmake-3.2.0-Linux-i386.tar.gz", "fileName": "cmake-3.2.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.0/cmake-3.2.0-win32-x86.zip", "fileName": "cmake-3.2.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.0/cmake-3.2.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.1.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.1.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-Linux-i386.tar.gz", "fileName": "cmake-3.1.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-win32-x86.zip", "fileName": "cmake-3.1.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.1.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.2/cmake-3.1.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.1.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.2/cmake-3.1.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.1.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.2/cmake-3.1.2-win32-x86.zip", "fileName": "cmake-3.1.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.1.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.1/cmake-3.1.1-Linux-i386.tar.gz", "fileName": "cmake-3.1.1-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.1/cmake-3.1.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.1.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.1/cmake-3.1.1-win32-x86.zip", "fileName": "cmake-3.1.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.1.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.0/cmake-3.1.0-Linux-i386.tar.gz", "fileName": "cmake-3.1.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.0/cmake-3.1.0-win32-x86.zip", "fileName": "cmake-3.1.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.0.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-Darwin64-universal.tar.gz", "fileName": "cmake-3.0.2-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-win32-x86.zip", "fileName": "cmake-3.0.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-Linux-i386.tar.gz", "fileName": "cmake-3.0.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.0.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.1/cmake-3.0.1-win32-x86.zip", "fileName": "cmake-3.0.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.1/cmake-3.0.1-Linux-i386.tar.gz", "fileName": "cmake-3.0.1-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.1/cmake-3.0.1-Darwin64-universal.tar.gz", "fileName": "cmake-3.0.1-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.0.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.0/cmake-3.0.0-Darwin64-universal.tar.gz", "fileName": "cmake-3.0.0-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.0/cmake-3.0.0-win32-x86.zip", "fileName": "cmake-3.0.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.0/cmake-3.0.0-Linux-i386.tar.gz", "fileName": "cmake-3.0.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "2.8.12": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.12.2/cmake-2.8.12.2-Linux-i386.tar.gz", "fileName": "cmake-2.8.12.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.12.2/cmake-2.8.12.2-Darwin64-universal.tar.gz", "fileName": "cmake-2.8.12.2-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.12.2/cmake-2.8.12.2-win32-x86.zip", "fileName": "cmake-2.8.12.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "2.8.10": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.10.2/cmake-2.8.10.2-win32-x86.zip", "fileName": "cmake-2.8.10.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.10.2/cmake-2.8.10.2-Linux-i386.tar.gz", "fileName": "cmake-2.8.10.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.10.2/cmake-2.8.10.2-Darwin64-universal.tar.gz", "fileName": "cmake-2.8.10.2-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "2.6.4": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.6.4/cmake-2.6.4-Linux-i386.tar.gz", "fileName": "cmake-2.6.4-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.6.4/cmake-2.6.4-win32-x86.zip", "fileName": "cmake-2.6.4-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "2.4.8": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.4.8/cmake-2.4.8-win32-x86.zip", "fileName": "cmake-2.4.8-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.4.8/cmake-2.4.8-Linux-i386.tar.gz", "fileName": "cmake-2.4.8-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } } }; +exports.cmakeCatalog = { "3.31.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-macos-universal.tar.gz", "fileName": "cmake-3.31.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-windows-arm64.zip", "fileName": "cmake-3.31.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-windows-x86_64.zip", "fileName": "cmake-3.31.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "latest": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-macos-universal.tar.gz", "fileName": "cmake-3.31.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-windows-arm64.zip", "fileName": "cmake-3.31.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.3/cmake-3.31.3-windows-x86_64.zip", "fileName": "cmake-3.31.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-linux-aarch64.tar.gz", "fileName": "cmake-3.31.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-linux-x86_64.tar.gz", "fileName": "cmake-3.31.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-macos-universal.tar.gz", "fileName": "cmake-3.31.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-windows-arm64.zip", "fileName": "cmake-3.31.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-windows-x86_64.zip", "fileName": "cmake-3.31.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-linux-aarch64.tar.gz", "fileName": "cmake-3.31.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-linux-x86_64.tar.gz", "fileName": "cmake-3.31.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-macos-universal.tar.gz", "fileName": "cmake-3.31.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-windows-arm64.zip", "fileName": "cmake-3.31.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.1/cmake-3.31.1-windows-x86_64.zip", "fileName": "cmake-3.31.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-linux-aarch64.tar.gz", "fileName": "cmake-3.30.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-linux-x86_64.tar.gz", "fileName": "cmake-3.30.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-macos-universal.tar.gz", "fileName": "cmake-3.30.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-windows-arm64.zip", "fileName": "cmake-3.30.6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.6/cmake-3.30.6-windows-x86_64.zip", "fileName": "cmake-3.30.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.9": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-linux-aarch64.tar.gz", "fileName": "cmake-3.29.9-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-linux-x86_64.tar.gz", "fileName": "cmake-3.29.9-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-macos-universal.tar.gz", "fileName": "cmake-3.29.9-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-windows-arm64.zip", "fileName": "cmake-3.29.9-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.9/cmake-3.29.9-windows-x86_64.zip", "fileName": "cmake-3.29.9-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-macos-universal.tar.gz", "fileName": "cmake-3.31.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-windows-arm64.zip", "fileName": "cmake-3.31.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0/cmake-3.31.0-windows-x86_64.zip", "fileName": "cmake-3.31.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-arm64.zip", "fileName": "cmake-3.31.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "latestrc": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-arm64.zip", "fileName": "cmake-3.31.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-windows-arm64.zip", "fileName": "cmake-3.31.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc2/cmake-3.31.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.31.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.31.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.31.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.31.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-windows-arm64.zip", "fileName": "cmake-3.31.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.31.0-rc1/cmake-3.31.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.31.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-linux-aarch64.tar.gz", "fileName": "cmake-3.30.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-linux-x86_64.tar.gz", "fileName": "cmake-3.30.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-macos-universal.tar.gz", "fileName": "cmake-3.30.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-windows-arm64.zip", "fileName": "cmake-3.30.5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-windows-x86_64.zip", "fileName": "cmake-3.30.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-linux-aarch64.tar.gz", "fileName": "cmake-3.30.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-linux-x86_64.tar.gz", "fileName": "cmake-3.30.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-macos-universal.tar.gz", "fileName": "cmake-3.30.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-windows-arm64.zip", "fileName": "cmake-3.30.4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-windows-x86_64.zip", "fileName": "cmake-3.30.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-aarch64.tar.gz", "fileName": "cmake-3.30.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-x86_64.tar.gz", "fileName": "cmake-3.30.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-macos-universal.tar.gz", "fileName": "cmake-3.30.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-windows-arm64.zip", "fileName": "cmake-3.30.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-windows-x86_64.zip", "fileName": "cmake-3.30.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.8": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-linux-aarch64.tar.gz", "fileName": "cmake-3.29.8-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-linux-x86_64.tar.gz", "fileName": "cmake-3.29.8-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-macos-universal.tar.gz", "fileName": "cmake-3.29.8-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-windows-arm64.zip", "fileName": "cmake-3.29.8-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.8/cmake-3.29.8-windows-x86_64.zip", "fileName": "cmake-3.29.8-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-aarch64.tar.gz", "fileName": "cmake-3.30.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz", "fileName": "cmake-3.30.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-macos-universal.tar.gz", "fileName": "cmake-3.30.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-windows-arm64.zip", "fileName": "cmake-3.30.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-windows-x86_64.zip", "fileName": "cmake-3.30.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-linux-aarch64.tar.gz", "fileName": "cmake-3.30.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-linux-x86_64.tar.gz", "fileName": "cmake-3.30.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-macos-universal.tar.gz", "fileName": "cmake-3.30.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-windows-arm64.zip", "fileName": "cmake-3.30.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1-windows-x86_64.zip", "fileName": "cmake-3.30.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-linux-aarch64.tar.gz", "fileName": "cmake-3.29.7-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-linux-x86_64.tar.gz", "fileName": "cmake-3.29.7-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-macos-universal.tar.gz", "fileName": "cmake-3.29.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-windows-arm64.zip", "fileName": "cmake-3.29.7-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.7/cmake-3.29.7-windows-x86_64.zip", "fileName": "cmake-3.29.7-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-macos-universal.tar.gz", "fileName": "cmake-3.30.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-windows-arm64.zip", "fileName": "cmake-3.30.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-windows-x86_64.zip", "fileName": "cmake-3.30.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-windows-arm64.zip", "fileName": "cmake-3.30.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc4/cmake-3.30.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-linux-aarch64.tar.gz", "fileName": "cmake-3.29.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-linux-x86_64.tar.gz", "fileName": "cmake-3.29.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-macos-universal.tar.gz", "fileName": "cmake-3.29.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-windows-arm64.zip", "fileName": "cmake-3.29.6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-windows-x86_64.zip", "fileName": "cmake-3.29.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-windows-arm64.zip", "fileName": "cmake-3.30.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc3/cmake-3.30.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-windows-arm64.zip", "fileName": "cmake-3.30.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc2/cmake-3.30.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.30.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.30.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.30.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.30.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-windows-arm64.zip", "fileName": "cmake-3.30.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.30.0-rc1/cmake-3.30.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.30.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-linux-aarch64.tar.gz", "fileName": "cmake-3.29.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-linux-x86_64.tar.gz", "fileName": "cmake-3.29.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-macos-universal.tar.gz", "fileName": "cmake-3.29.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-windows-arm64.zip", "fileName": "cmake-3.29.5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.5/cmake-3.29.5-windows-x86_64.zip", "fileName": "cmake-3.29.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-linux-aarch64.tar.gz", "fileName": "cmake-3.29.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-linux-x86_64.tar.gz", "fileName": "cmake-3.29.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-macos-universal.tar.gz", "fileName": "cmake-3.29.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-windows-arm64.zip", "fileName": "cmake-3.29.4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.4/cmake-3.29.4-windows-x86_64.zip", "fileName": "cmake-3.29.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-linux-aarch64.tar.gz", "fileName": "cmake-3.28.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-linux-x86_64.tar.gz", "fileName": "cmake-3.28.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-macos-universal.tar.gz", "fileName": "cmake-3.28.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-windows-arm64.zip", "fileName": "cmake-3.28.6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-windows-x86_64.zip", "fileName": "cmake-3.28.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-linux-aarch64.tar.gz", "fileName": "cmake-3.29.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-linux-x86_64.tar.gz", "fileName": "cmake-3.29.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-macos-universal.tar.gz", "fileName": "cmake-3.29.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-windows-arm64.zip", "fileName": "cmake-3.29.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.3/cmake-3.29.3-windows-x86_64.zip", "fileName": "cmake-3.29.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-aarch64.tar.gz", "fileName": "cmake-3.28.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.tar.gz", "fileName": "cmake-3.28.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-macos-universal.tar.gz", "fileName": "cmake-3.28.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-windows-arm64.zip", "fileName": "cmake-3.28.5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-windows-x86_64.zip", "fileName": "cmake-3.28.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-aarch64.tar.gz", "fileName": "cmake-3.29.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.tar.gz", "fileName": "cmake-3.29.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-macos-universal.tar.gz", "fileName": "cmake-3.29.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-windows-arm64.zip", "fileName": "cmake-3.29.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-windows-x86_64.zip", "fileName": "cmake-3.29.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-linux-aarch64.tar.gz", "fileName": "cmake-3.29.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-linux-x86_64.tar.gz", "fileName": "cmake-3.29.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-macos-universal.tar.gz", "fileName": "cmake-3.29.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-windows-arm64.zip", "fileName": "cmake-3.29.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.1/cmake-3.29.1-windows-x86_64.zip", "fileName": "cmake-3.29.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-macos-universal.tar.gz", "fileName": "cmake-3.29.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-windows-arm64.zip", "fileName": "cmake-3.29.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-windows-x86_64.zip", "fileName": "cmake-3.29.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-linux-aarch64.tar.gz", "fileName": "cmake-3.28.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-linux-x86_64.tar.gz", "fileName": "cmake-3.28.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-macos-universal.tar.gz", "fileName": "cmake-3.28.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-windows-arm64.zip", "fileName": "cmake-3.28.4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.4/cmake-3.28.4-windows-x86_64.zip", "fileName": "cmake-3.28.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-windows-arm64.zip", "fileName": "cmake-3.29.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc4/cmake-3.29.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-windows-arm64.zip", "fileName": "cmake-3.29.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc3/cmake-3.29.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-windows-arm64.zip", "fileName": "cmake-3.29.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc2/cmake-3.29.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.29.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.29.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.29.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.29.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-windows-arm64.zip", "fileName": "cmake-3.29.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.29.0-rc1/cmake-3.29.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.29.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-aarch64.tar.gz", "fileName": "cmake-3.28.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz", "fileName": "cmake-3.28.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-macos-universal.tar.gz", "fileName": "cmake-3.28.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-windows-arm64.zip", "fileName": "cmake-3.28.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-windows-x86_64.zip", "fileName": "cmake-3.28.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-linux-aarch64.tar.gz", "fileName": "cmake-3.28.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-linux-x86_64.tar.gz", "fileName": "cmake-3.28.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-macos-universal.tar.gz", "fileName": "cmake-3.28.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-windows-arm64.zip", "fileName": "cmake-3.28.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.2/cmake-3.28.2-windows-x86_64.zip", "fileName": "cmake-3.28.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-aarch64.tar.gz", "fileName": "cmake-3.28.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-x86_64.tar.gz", "fileName": "cmake-3.28.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-macos-universal.tar.gz", "fileName": "cmake-3.28.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-windows-arm64.zip", "fileName": "cmake-3.28.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-windows-x86_64.zip", "fileName": "cmake-3.28.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-macos-universal.tar.gz", "fileName": "cmake-3.28.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-windows-arm64.zip", "fileName": "cmake-3.28.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-windows-x86_64.zip", "fileName": "cmake-3.28.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-windows-arm64.zip", "fileName": "cmake-3.28.0-rc6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.9": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-linux-aarch64.tar.gz", "fileName": "cmake-3.27.9-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-linux-x86_64.tar.gz", "fileName": "cmake-3.27.9-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-macos-universal.tar.gz", "fileName": "cmake-3.27.9-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-windows-arm64.zip", "fileName": "cmake-3.27.9-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.9/cmake-3.27.9-windows-x86_64.zip", "fileName": "cmake-3.27.9-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-linux-aarch64.tar.gz", "fileName": "cmake-3.26.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-linux-x86_64.tar.gz", "fileName": "cmake-3.26.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-macos-universal.tar.gz", "fileName": "cmake-3.26.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-windows-arm64.zip", "fileName": "cmake-3.26.6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.6/cmake-3.26.6-windows-x86_64.zip", "fileName": "cmake-3.26.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-windows-arm64.zip", "fileName": "cmake-3.28.0-rc5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.8": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-linux-aarch64.tar.gz", "fileName": "cmake-3.27.8-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-linux-x86_64.tar.gz", "fileName": "cmake-3.27.8-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-macos-universal.tar.gz", "fileName": "cmake-3.27.8-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-windows-arm64.zip", "fileName": "cmake-3.27.8-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-windows-x86_64.zip", "fileName": "cmake-3.27.8-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-windows-arm64.zip", "fileName": "cmake-3.28.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc4/cmake-3.28.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-windows-arm64.zip", "fileName": "cmake-3.28.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc3/cmake-3.28.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-windows-arm64.zip", "fileName": "cmake-3.28.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc2/cmake-3.28.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.28.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.28.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.28.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.28.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-windows-arm64.zip", "fileName": "cmake-3.28.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc1/cmake-3.28.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.28.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-linux-aarch64.tar.gz", "fileName": "cmake-3.27.7-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-linux-x86_64.tar.gz", "fileName": "cmake-3.27.7-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-macos-universal.tar.gz", "fileName": "cmake-3.27.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-arm64.zip", "fileName": "cmake-3.27.7-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-x86_64.zip", "fileName": "cmake-3.27.7-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-aarch64.tar.gz", "fileName": "cmake-3.27.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.tar.gz", "fileName": "cmake-3.27.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-macos-universal.tar.gz", "fileName": "cmake-3.27.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-windows-arm64.zip", "fileName": "cmake-3.27.6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-windows-x86_64.zip", "fileName": "cmake-3.27.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-linux-aarch64.tar.gz", "fileName": "cmake-3.27.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-linux-x86_64.tar.gz", "fileName": "cmake-3.27.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-macos-universal.tar.gz", "fileName": "cmake-3.27.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-windows-arm64.zip", "fileName": "cmake-3.27.5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.5/cmake-3.27.5-windows-x86_64.zip", "fileName": "cmake-3.27.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-linux-aarch64.tar.gz", "fileName": "cmake-3.27.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-linux-x86_64.tar.gz", "fileName": "cmake-3.27.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-macos-universal.tar.gz", "fileName": "cmake-3.27.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-windows-arm64.zip", "fileName": "cmake-3.27.4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4-windows-x86_64.zip", "fileName": "cmake-3.27.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-linux-aarch64.tar.gz", "fileName": "cmake-3.27.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-linux-x86_64.tar.gz", "fileName": "cmake-3.27.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-macos-universal.tar.gz", "fileName": "cmake-3.27.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-windows-arm64.zip", "fileName": "cmake-3.27.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.3/cmake-3.27.3-windows-x86_64.zip", "fileName": "cmake-3.27.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-aarch64.tar.gz", "fileName": "cmake-3.27.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-linux-x86_64.tar.gz", "fileName": "cmake-3.27.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-macos-universal.tar.gz", "fileName": "cmake-3.27.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-windows-arm64.zip", "fileName": "cmake-3.27.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.2/cmake-3.27.2-windows-x86_64.zip", "fileName": "cmake-3.27.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-linux-aarch64.tar.gz", "fileName": "cmake-3.27.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-linux-x86_64.tar.gz", "fileName": "cmake-3.27.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-macos-universal.tar.gz", "fileName": "cmake-3.27.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-windows-arm64.zip", "fileName": "cmake-3.27.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-windows-x86_64.zip", "fileName": "cmake-3.27.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-linux-aarch64.tar.gz", "fileName": "cmake-3.26.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-linux-x86_64.tar.gz", "fileName": "cmake-3.26.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-macos-universal.tar.gz", "fileName": "cmake-3.26.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-windows-arm64.zip", "fileName": "cmake-3.26.5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.5/cmake-3.26.5-windows-x86_64.zip", "fileName": "cmake-3.26.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-macos-universal.tar.gz", "fileName": "cmake-3.27.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-windows-arm64.zip", "fileName": "cmake-3.27.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0-windows-x86_64.zip", "fileName": "cmake-3.27.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-windows-arm64.zip", "fileName": "cmake-3.27.0-rc5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc5/cmake-3.27.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-windows-arm64.zip", "fileName": "cmake-3.27.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc4/cmake-3.27.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-windows-arm64.zip", "fileName": "cmake-3.27.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc3/cmake-3.27.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-windows-arm64.zip", "fileName": "cmake-3.27.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc2/cmake-3.27.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.27.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.27.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.27.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.27.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-windows-arm64.zip", "fileName": "cmake-3.27.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.27.0-rc1/cmake-3.27.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.27.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-aarch64.tar.gz", "fileName": "cmake-3.26.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.tar.gz", "fileName": "cmake-3.26.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-macos-universal.tar.gz", "fileName": "cmake-3.26.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-windows-arm64.zip", "fileName": "cmake-3.26.4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-windows-x86_64.zip", "fileName": "cmake-3.26.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-linux-aarch64.tar.gz", "fileName": "cmake-3.26.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-linux-x86_64.tar.gz", "fileName": "cmake-3.26.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-macos-universal.tar.gz", "fileName": "cmake-3.26.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-windows-arm64.zip", "fileName": "cmake-3.26.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3-windows-x86_64.zip", "fileName": "cmake-3.26.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-aarch64.tar.gz", "fileName": "cmake-3.26.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-x86_64.tar.gz", "fileName": "cmake-3.26.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-macos-universal.tar.gz", "fileName": "cmake-3.26.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-windows-arm64.zip", "fileName": "cmake-3.26.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-windows-x86_64.zip", "fileName": "cmake-3.26.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-linux-aarch64.tar.gz", "fileName": "cmake-3.26.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-linux-x86_64.tar.gz", "fileName": "cmake-3.26.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-macos-universal.tar.gz", "fileName": "cmake-3.26.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-windows-arm64.zip", "fileName": "cmake-3.26.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-windows-x86_64.zip", "fileName": "cmake-3.26.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-macos-universal.tar.gz", "fileName": "cmake-3.26.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-windows-arm64.zip", "fileName": "cmake-3.26.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-windows-x86_64.zip", "fileName": "cmake-3.26.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-windows-arm64.zip", "fileName": "cmake-3.26.0-rc6-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc6/cmake-3.26.0-rc6-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-linux-aarch64.tar.gz", "fileName": "cmake-3.25.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-linux-x86_64.tar.gz", "fileName": "cmake-3.25.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-macos-universal.tar.gz", "fileName": "cmake-3.25.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-windows-arm64.zip", "fileName": "cmake-3.25.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-windows-x86_64.zip", "fileName": "cmake-3.25.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-linux-aarch64.tar.gz", "fileName": "cmake-3.24.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-linux-x86_64.tar.gz", "fileName": "cmake-3.24.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-macos-universal.tar.gz", "fileName": "cmake-3.24.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-windows-arm64.zip", "fileName": "cmake-3.24.4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.4/cmake-3.24.4-windows-x86_64.zip", "fileName": "cmake-3.24.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-windows-arm64.zip", "fileName": "cmake-3.26.0-rc5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc5/cmake-3.26.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-windows-arm64.zip", "fileName": "cmake-3.26.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc4/cmake-3.26.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-windows-arm64.zip", "fileName": "cmake-3.26.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc3/cmake-3.26.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-windows-arm64.zip", "fileName": "cmake-3.26.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc2/cmake-3.26.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.26.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.26.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.26.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.26.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-windows-arm64.zip", "fileName": "cmake-3.26.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.26.0-rc1/cmake-3.26.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.26.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-aarch64.tar.gz", "fileName": "cmake-3.25.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz", "fileName": "cmake-3.25.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-macos-universal.tar.gz", "fileName": "cmake-3.25.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-windows-arm64.zip", "fileName": "cmake-3.25.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-windows-x86_64.zip", "fileName": "cmake-3.25.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-aarch64.tar.gz", "fileName": "cmake-3.25.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-x86_64.tar.gz", "fileName": "cmake-3.25.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-macos-universal.tar.gz", "fileName": "cmake-3.25.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-arm64.zip", "fileName": "cmake-3.25.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-x86_64.zip", "fileName": "cmake-3.25.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-macos-universal.tar.gz", "fileName": "cmake-3.25.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-windows-arm64.zip", "fileName": "cmake-3.25.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0/cmake-3.25.0-windows-x86_64.zip", "fileName": "cmake-3.25.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-windows-arm64.zip", "fileName": "cmake-3.25.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc4/cmake-3.25.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-windows-arm64.zip", "fileName": "cmake-3.25.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc3/cmake-3.25.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-linux-aarch64.tar.gz", "fileName": "cmake-3.24.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-linux-x86_64.tar.gz", "fileName": "cmake-3.24.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-macos-universal.tar.gz", "fileName": "cmake-3.24.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-windows-arm64.zip", "fileName": "cmake-3.24.3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.3/cmake-3.24.3-windows-x86_64.zip", "fileName": "cmake-3.24.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-aarch64.tar.gz", "fileName": "cmake-3.23.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-x86_64.tar.gz", "fileName": "cmake-3.23.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-macos-universal.tar.gz", "fileName": "cmake-3.23.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-windows-x86_64.zip", "fileName": "cmake-3.23.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-windows-arm64.zip", "fileName": "cmake-3.25.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc2/cmake-3.25.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.25.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.25.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.25.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.25.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-windows-arm64.zip", "fileName": "cmake-3.25.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.25.0-rc1/cmake-3.25.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.25.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-linux-aarch64.tar.gz", "fileName": "cmake-3.23.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-linux-x86_64.tar.gz", "fileName": "cmake-3.23.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-macos-universal.tar.gz", "fileName": "cmake-3.23.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.4/cmake-3.23.4-windows-x86_64.zip", "fileName": "cmake-3.23.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-aarch64.tar.gz", "fileName": "cmake-3.24.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.tar.gz", "fileName": "cmake-3.24.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-macos-universal.tar.gz", "fileName": "cmake-3.24.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-windows-arm64.zip", "fileName": "cmake-3.24.2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-windows-x86_64.zip", "fileName": "cmake-3.24.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-linux-aarch64.tar.gz", "fileName": "cmake-3.24.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-linux-x86_64.tar.gz", "fileName": "cmake-3.24.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-macos-universal.tar.gz", "fileName": "cmake-3.24.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-windows-arm64.zip", "fileName": "cmake-3.24.1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.1/cmake-3.24.1-windows-x86_64.zip", "fileName": "cmake-3.24.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-macos-universal.tar.gz", "fileName": "cmake-3.24.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-windows-arm64.zip", "fileName": "cmake-3.24.0-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0-windows-x86_64.zip", "fileName": "cmake-3.24.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-windows-arm64.zip", "fileName": "cmake-3.24.0-rc5-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc5/cmake-3.24.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-linux-aarch64.tar.gz", "fileName": "cmake-3.23.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-linux-x86_64.tar.gz", "fileName": "cmake-3.23.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-macos-universal.tar.gz", "fileName": "cmake-3.23.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-windows-x86_64.zip", "fileName": "cmake-3.23.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-linux-aarch64.tar.gz", "fileName": "cmake-3.22.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-linux-x86_64.tar.gz", "fileName": "cmake-3.22.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-macos-universal.tar.gz", "fileName": "cmake-3.22.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.6/cmake-3.22.6-windows-x86_64.zip", "fileName": "cmake-3.22.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-windows-arm64.zip", "fileName": "cmake-3.24.0-rc4-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc4/cmake-3.24.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-windows-arm64.zip", "fileName": "cmake-3.24.0-rc3-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc3/cmake-3.24.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-windows-arm64.zip", "fileName": "cmake-3.24.0-rc2-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc2/cmake-3.24.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.24.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.24.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.24.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.24.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-windows-arm64.zip", "fileName": "cmake-3.24.0-rc1-windows-arm64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.24.0-rc1/cmake-3.24.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.24.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-linux-aarch64.tar.gz", "fileName": "cmake-3.22.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-linux-x86_64.tar.gz", "fileName": "cmake-3.22.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-macos-universal.tar.gz", "fileName": "cmake-3.22.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.5/cmake-3.22.5-windows-x86_64.zip", "fileName": "cmake-3.22.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-linux-aarch64.tar.gz", "fileName": "cmake-3.21.7-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-linux-x86_64.tar.gz", "fileName": "cmake-3.21.7-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-macos-universal.tar.gz", "fileName": "cmake-3.21.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.7/cmake-3.21.7-windows-x86_64.zip", "fileName": "cmake-3.21.7-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-aarch64.tar.gz", "fileName": "cmake-3.23.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.tar.gz", "fileName": "cmake-3.23.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-macos-universal.tar.gz", "fileName": "cmake-3.23.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-x86_64.zip", "fileName": "cmake-3.23.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-aarch64.tar.gz", "fileName": "cmake-3.23.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz", "fileName": "cmake-3.23.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-macos-universal.tar.gz", "fileName": "cmake-3.23.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-windows-x86_64.zip", "fileName": "cmake-3.23.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-linux-aarch64.tar.gz", "fileName": "cmake-3.22.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-linux-x86_64.tar.gz", "fileName": "cmake-3.22.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-macos-universal.tar.gz", "fileName": "cmake-3.22.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.4/cmake-3.22.4-windows-x86_64.zip", "fileName": "cmake-3.22.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-macos-universal.tar.gz", "fileName": "cmake-3.23.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-windows-x86_64.zip", "fileName": "cmake-3.23.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc5/cmake-3.23.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc4/cmake-3.23.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc3/cmake-3.23.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-linux-aarch64.tar.gz", "fileName": "cmake-3.22.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-linux-x86_64.tar.gz", "fileName": "cmake-3.22.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-macos-universal.tar.gz", "fileName": "cmake-3.22.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3-windows-x86_64.zip", "fileName": "cmake-3.22.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-linux-aarch64.tar.gz", "fileName": "cmake-3.21.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-linux-x86_64.tar.gz", "fileName": "cmake-3.21.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-macos-universal.tar.gz", "fileName": "cmake-3.21.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.6/cmake-3.21.6-windows-x86_64.zip", "fileName": "cmake-3.21.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.23.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.23.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.23.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.23.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.23.0-rc1/cmake-3.23.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.23.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-linux-aarch64.tar.gz", "fileName": "cmake-3.21.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-linux-x86_64.tar.gz", "fileName": "cmake-3.21.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-macos-universal.tar.gz", "fileName": "cmake-3.21.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.5/cmake-3.21.5-windows-x86_64.zip", "fileName": "cmake-3.21.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-linux-aarch64.tar.gz", "fileName": "cmake-3.22.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-linux-x86_64.tar.gz", "fileName": "cmake-3.22.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-macos-universal.tar.gz", "fileName": "cmake-3.22.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-windows-x86_64.zip", "fileName": "cmake-3.22.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-linux-aarch64.tar.gz", "fileName": "cmake-3.22.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-linux-x86_64.tar.gz", "fileName": "cmake-3.22.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-macos-universal.tar.gz", "fileName": "cmake-3.22.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-windows-x86_64.zip", "fileName": "cmake-3.22.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-macos-universal.tar.gz", "fileName": "cmake-3.22.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-windows-x86_64.zip", "fileName": "cmake-3.22.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.22.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc3/cmake-3.22.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.22.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.22.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc2/cmake-3.22.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.22.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-aarch64.tar.gz", "fileName": "cmake-3.21.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.tar.gz", "fileName": "cmake-3.21.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-macos-universal.tar.gz", "fileName": "cmake-3.21.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-windows-x86_64.zip", "fileName": "cmake-3.21.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.22.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.22.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.22.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.22.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.22.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-aarch64.tar.gz", "fileName": "cmake-3.21.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-x86_64.tar.gz", "fileName": "cmake-3.21.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-macos-universal.tar.gz", "fileName": "cmake-3.21.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-windows-x86_64.zip", "fileName": "cmake-3.21.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-aarch64.tar.gz", "fileName": "cmake-3.20.6-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-x86_64.tar.gz", "fileName": "cmake-3.20.6-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-macos-universal.tar.gz", "fileName": "cmake-3.20.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-windows-x86_64.zip", "fileName": "cmake-3.20.6-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-aarch64.tar.gz", "fileName": "cmake-3.21.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-x86_64.tar.gz", "fileName": "cmake-3.21.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-macos-universal.tar.gz", "fileName": "cmake-3.21.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-windows-x86_64.zip", "fileName": "cmake-3.21.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-aarch64.tar.gz", "fileName": "cmake-3.21.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-x86_64.tar.gz", "fileName": "cmake-3.21.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-macos-universal.tar.gz", "fileName": "cmake-3.21.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-windows-x86_64.zip", "fileName": "cmake-3.21.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-macos-universal.tar.gz", "fileName": "cmake-3.21.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-windows-x86_64.zip", "fileName": "cmake-3.21.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.21.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc3/cmake-3.21.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.21.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.21.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.21.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.21.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.21.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.21.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.21.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.21.0-rc1/cmake-3.21.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.21.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-linux-aarch64.tar.gz", "fileName": "cmake-3.20.5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-linux-x86_64.tar.gz", "fileName": "cmake-3.20.5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-macos-universal.tar.gz", "fileName": "cmake-3.20.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-windows-x86_64.zip", "fileName": "cmake-3.20.5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-linux-aarch64.tar.gz", "fileName": "cmake-3.20.4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-linux-x86_64.tar.gz", "fileName": "cmake-3.20.4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-macos-universal.tar.gz", "fileName": "cmake-3.20.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.4/cmake-3.20.4-windows-x86_64.zip", "fileName": "cmake-3.20.4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-linux-aarch64.tar.gz", "fileName": "cmake-3.20.3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-linux-x86_64.tar.gz", "fileName": "cmake-3.20.3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-macos-universal.tar.gz", "fileName": "cmake-3.20.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-windows-x86_64.zip", "fileName": "cmake-3.20.3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-linux-aarch64.tar.gz", "fileName": "cmake-3.20.2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-linux-x86_64.tar.gz", "fileName": "cmake-3.20.2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-macos-universal.tar.gz", "fileName": "cmake-3.20.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-windows-x86_64.zip", "fileName": "cmake-3.20.2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-linux-aarch64.tar.gz", "fileName": "cmake-3.20.1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-linux-x86_64.tar.gz", "fileName": "cmake-3.20.1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-macos-universal.tar.gz", "fileName": "cmake-3.20.1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-windows-x86_64.zip", "fileName": "cmake-3.20.1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.8": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.8-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.8-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-macos-universal.tar.gz", "fileName": "cmake-3.19.8-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-win64-x64.zip", "fileName": "cmake-3.19.8-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-macos-universal.tar.gz", "fileName": "cmake-3.20.0-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-windows-x86_64.zip", "fileName": "cmake-3.20.0-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc5-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc5-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc5/cmake-3.20.0-rc5-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc5-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.7": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.7-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-macos-universal.tar.gz", "fileName": "cmake-3.19.7-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-win64-x64.zip", "fileName": "cmake-3.19.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc4-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc4-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc4/cmake-3.20.0-rc4-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc4-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc3-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc3-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc3/cmake-3.20.0-rc3-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc3-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc2": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc2-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc2-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc2-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.6": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.6-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-macos-universal.tar.gz", "fileName": "cmake-3.19.6-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-win64-x64.zip", "fileName": "cmake-3.19.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.20.0-rc1": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-linux-aarch64.tar.gz", "fileName": "cmake-3.20.0-rc1-linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-linux-x86_64.tar.gz", "fileName": "cmake-3.20.0-rc1-linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-macos-universal.tar.gz", "fileName": "cmake-3.20.0-rc1-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.20.0-rc1/cmake-3.20.0-rc1-windows-x86_64.zip", "fileName": "cmake-3.20.0-rc1-windows-x86_64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.5": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.5-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-macos-universal.tar.gz", "fileName": "cmake-3.19.5-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-win64-x64.zip", "fileName": "cmake-3.19.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-win64-x64.zip", "fileName": "cmake-3.18.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.4": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.4-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-macos-universal.tar.gz", "fileName": "cmake-3.19.4-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4-win64-x64.zip", "fileName": "cmake-3.19.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.3": { "linux-arm64": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-aarch64.tar.gz", "fileName": "cmake-3.19.3-Linux-aarch64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-macos-universal.tar.gz", "fileName": "cmake-3.19.3-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-win64-x64.zip", "fileName": "cmake-3.19.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-macos-universal.tar.gz", "fileName": "cmake-3.19.2-macos-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-win64-x64.zip", "fileName": "cmake-3.19.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1-win64-x64.zip", "fileName": "cmake-3.19.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0/cmake-3.19.0-win64-x64.zip", "fileName": "cmake-3.19.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-win64-x64.zip", "fileName": "cmake-3.18.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc3/cmake-3.19.0-rc3-win64-x64.zip", "fileName": "cmake-3.19.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc2/cmake-3.19.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc2/cmake-3.19.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc2/cmake-3.19.0-rc2-win64-x64.zip", "fileName": "cmake-3.19.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.19.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc1/cmake-3.19.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc1/cmake-3.19.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.19.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.19.0-rc1/cmake-3.19.0-rc1-win64-x64.zip", "fileName": "cmake-3.19.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-win64-x64.zip", "fileName": "cmake-3.18.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-win64-x64.zip", "fileName": "cmake-3.18.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.5/cmake-3.17.5-win64-x64.zip", "fileName": "cmake-3.17.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.9": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.9/cmake-3.16.9-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.9-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.9/cmake-3.16.9-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.9-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.9/cmake-3.16.9-win64-x64.zip", "fileName": "cmake-3.16.9-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-win64-x64.zip", "fileName": "cmake-3.18.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-win64-x64.zip", "fileName": "cmake-3.18.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.4/cmake-3.17.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.4/cmake-3.17.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.4/cmake-3.17.4-win64-x64.zip", "fileName": "cmake-3.17.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0-win64-x64.zip", "fileName": "cmake-3.18.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc4/cmake-3.18.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc4/cmake-3.18.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc4/cmake-3.18.0-rc4-win64-x64.zip", "fileName": "cmake-3.18.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc3/cmake-3.18.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc3/cmake-3.18.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc3/cmake-3.18.0-rc3-win64-x64.zip", "fileName": "cmake-3.18.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2-win64-x64.zip", "fileName": "cmake-3.18.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.18.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.18.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1-win64-x64.zip", "fileName": "cmake-3.18.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.8": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.8-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.8-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8-win64-x64.zip", "fileName": "cmake-3.16.8-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3-win64-x64.zip", "fileName": "cmake-3.17.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.7": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.7/cmake-3.16.7-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.7-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.7/cmake-3.16.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.7/cmake-3.16.7-win64-x64.zip", "fileName": "cmake-3.16.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2-win64-x64.zip", "fileName": "cmake-3.17.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.6/cmake-3.16.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.6/cmake-3.16.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.6/cmake-3.16.6-win64-x64.zip", "fileName": "cmake-3.16.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.1/cmake-3.17.1-win64-x64.zip", "fileName": "cmake-3.17.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-win64-x64.zip", "fileName": "cmake-3.17.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3-win64-x64.zip", "fileName": "cmake-3.17.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-win64-x64.zip", "fileName": "cmake-3.16.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc2/cmake-3.17.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc2/cmake-3.17.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc2/cmake-3.17.0-rc2-win64-x64.zip", "fileName": "cmake-3.17.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.17.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc1/cmake-3.17.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc1/cmake-3.17.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.17.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.17.0-rc1/cmake-3.17.0-rc1-win64-x64.zip", "fileName": "cmake-3.17.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-win64-x64.zip", "fileName": "cmake-3.16.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.7": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.7-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-win64-x64.zip", "fileName": "cmake-3.15.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3-win64-x64.zip", "fileName": "cmake-3.16.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-win64-x64.zip", "fileName": "cmake-3.16.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-win64-x64.zip", "fileName": "cmake-3.15.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.1/cmake-3.16.1-win64-x64.zip", "fileName": "cmake-3.16.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0/cmake-3.16.0-win64-x64.zip", "fileName": "cmake-3.16.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc4/cmake-3.16.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc4/cmake-3.16.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc4/cmake-3.16.0-rc4-win64-x64.zip", "fileName": "cmake-3.16.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-win64-x64.zip", "fileName": "cmake-3.16.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-win64-x64.zip", "fileName": "cmake-3.15.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-win64-x64.zip", "fileName": "cmake-3.16.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.16.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.16.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1-win64-x64.zip", "fileName": "cmake-3.16.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-win64-x64.zip", "fileName": "cmake-3.15.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.7": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.7-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.7-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-win64-x64.zip", "fileName": "cmake-3.14.7-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-win64-x64.zip", "fileName": "cmake-3.15.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-win64-x64.zip", "fileName": "cmake-3.15.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1-win64-x64.zip", "fileName": "cmake-3.15.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0/cmake-3.15.0-win64-x64.zip", "fileName": "cmake-3.15.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.6": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6-win64-x64.zip", "fileName": "cmake-3.14.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc4/cmake-3.15.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc4/cmake-3.15.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc4/cmake-3.15.0-rc4-win64-x64.zip", "fileName": "cmake-3.15.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc3/cmake-3.15.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc3/cmake-3.15.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc3/cmake-3.15.0-rc3-win64-x64.zip", "fileName": "cmake-3.15.0-rc3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc2/cmake-3.15.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc2/cmake-3.15.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc2/cmake-3.15.0-rc2-win64-x64.zip", "fileName": "cmake-3.15.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.15.0-rc1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc1/cmake-3.15.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc1/cmake-3.15.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.15.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.15.0-rc1/cmake-3.15.0-rc1-win64-x64.zip", "fileName": "cmake-3.15.0-rc1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-win64-x64.zip", "fileName": "cmake-3.14.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-win64-x64.zip", "fileName": "cmake-3.14.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.13.5": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.5/cmake-3.13.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.5/cmake-3.13.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.5/cmake-3.13.5-win64-x64.zip", "fileName": "cmake-3.13.5-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3-win64-x64.zip", "fileName": "cmake-3.14.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake-3.14.2-win64-x64.zip", "fileName": "cmake-3.14.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1-win64-x64.zip", "fileName": "cmake-3.14.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.14.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-win64-x64.zip", "fileName": "cmake-3.14.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.14.0-rc4": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4-win64-x64.zip", "fileName": "cmake-3.14.0-rc4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.14.0-rc3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc3/cmake-3.14.0-rc3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc3/cmake-3.14.0-rc3-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc3/cmake-3.14.0-rc3-win32-x86.zip", "fileName": "cmake-3.14.0-rc3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.14.0-rc2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc2/cmake-3.14.0-rc2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc2/cmake-3.14.0-rc2-win64-x64.zip", "fileName": "cmake-3.14.0-rc2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc2/cmake-3.14.0-rc2-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.14.0-rc1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc1/cmake-3.14.0-rc1-win32-x86.zip", "fileName": "cmake-3.14.0-rc1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc1/cmake-3.14.0-rc1-Linux-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.14.0-rc1/cmake-3.14.0-rc1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.14.0-rc1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.13.4": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-win32-x86.zip", "fileName": "cmake-3.13.4-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.13.3": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3-win64-x64.zip", "fileName": "cmake-3.13.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.13.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-win64-x64.zip", "fileName": "cmake-3.13.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.13.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.1/cmake-3.13.1-win64-x64.zip", "fileName": "cmake-3.13.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.13.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.13.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.13.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-win64-x64.zip", "fileName": "cmake-3.13.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.12.4": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-win64-x64.zip", "fileName": "cmake-3.12.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.12.3": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.3/cmake-3.12.3-win64-x64.zip", "fileName": "cmake-3.12.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.3/cmake-3.12.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.3/cmake-3.12.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.12.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.2/cmake-3.12.2-win64-x64.zip", "fileName": "cmake-3.12.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.2/cmake-3.12.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.2/cmake-3.12.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.12.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.1/cmake-3.12.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.1/cmake-3.12.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.1/cmake-3.12.1-win32-x86.zip", "fileName": "cmake-3.12.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.12.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.0/cmake-3.12.0-win32-x86.zip", "fileName": "cmake-3.12.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.0/cmake-3.12.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.12.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.12.0/cmake-3.12.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.12.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.11.4": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.4/cmake-3.11.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.4/cmake-3.11.4-win32-x86.zip", "fileName": "cmake-3.11.4-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.4/cmake-3.11.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.11.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.3/cmake-3.11.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.3/cmake-3.11.3-win32-x86.zip", "fileName": "cmake-3.11.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.3/cmake-3.11.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.11.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.2/cmake-3.11.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.2/cmake-3.11.2-win32-x86.zip", "fileName": "cmake-3.11.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.2/cmake-3.11.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.11.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.1/cmake-3.11.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.1/cmake-3.11.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.1/cmake-3.11.1-win64-x64.zip", "fileName": "cmake-3.11.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.11.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.0/cmake-3.11.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.11.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.0/cmake-3.11.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.11.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.11.0/cmake-3.11.0-win32-x86.zip", "fileName": "cmake-3.11.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.10.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-win32-x86.zip", "fileName": "cmake-3.10.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.3/cmake-3.10.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.10.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.2/cmake-3.10.2-win64-x64.zip", "fileName": "cmake-3.10.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.2/cmake-3.10.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.2/cmake-3.10.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.10.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.1/cmake-3.10.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.1/cmake-3.10.1-win64-x64.zip", "fileName": "cmake-3.10.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.1/cmake-3.10.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.10.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.10.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0-win32-x86.zip", "fileName": "cmake-3.10.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.10.0/cmake-3.10.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.10.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.6": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.6/cmake-3.9.6-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.6-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.6/cmake-3.9.6-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.6-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.6/cmake-3.9.6-win64-x64.zip", "fileName": "cmake-3.9.6-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.9.5": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.5/cmake-3.9.5-win32-x86.zip", "fileName": "cmake-3.9.5-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.5/cmake-3.9.5-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.5-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.5/cmake-3.9.5-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.5-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.4": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.4/cmake-3.9.4-win64-x64.zip", "fileName": "cmake-3.9.4-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.4/cmake-3.9.4-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.4-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.4/cmake-3.9.4-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.4-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.3/cmake-3.9.3-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.3-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.3/cmake-3.9.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.3/cmake-3.9.3-win64-x64.zip", "fileName": "cmake-3.9.3-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.9.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.2/cmake-3.9.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.2/cmake-3.9.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.2/cmake-3.9.2-win64-x64.zip", "fileName": "cmake-3.9.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.9.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.1/cmake-3.9.1-win32-x86.zip", "fileName": "cmake-3.9.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.1/cmake-3.9.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.1/cmake-3.9.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.9.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.0/cmake-3.9.0-win32-x86.zip", "fileName": "cmake-3.9.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.0/cmake-3.9.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.9.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.9.0/cmake-3.9.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.9.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.8.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.2/cmake-3.8.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.8.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.2/cmake-3.8.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.8.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.2/cmake-3.8.2-win64-x64.zip", "fileName": "cmake-3.8.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.8.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.1/cmake-3.8.1-win64-x64.zip", "fileName": "cmake-3.8.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.1/cmake-3.8.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.8.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.1/cmake-3.8.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.8.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.8.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.0/cmake-3.8.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.8.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.0/cmake-3.8.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.8.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.8.0/cmake-3.8.0-win64-x64.zip", "fileName": "cmake-3.8.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.7.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.2/cmake-3.7.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.7.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.2/cmake-3.7.2-win64-x64.zip", "fileName": "cmake-3.7.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.2/cmake-3.7.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.7.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.7.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.1/cmake-3.7.1-win64-x64.zip", "fileName": "cmake-3.7.1-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.1/cmake-3.7.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.7.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.1/cmake-3.7.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.7.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.7.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.0/cmake-3.7.0-win64-x64.zip", "fileName": "cmake-3.7.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.0/cmake-3.7.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.7.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.7.0/cmake-3.7.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.7.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.6.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.3/cmake-3.6.3-Linux-i386.tar.gz", "fileName": "cmake-3.6.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.3/cmake-3.6.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.3/cmake-3.6.3-win32-x86.zip", "fileName": "cmake-3.6.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.6.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.2/cmake-3.6.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.2/cmake-3.6.2-Linux-i386.tar.gz", "fileName": "cmake-3.6.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.2/cmake-3.6.2-win64-x64.zip", "fileName": "cmake-3.6.2-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.6.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.1/cmake-3.6.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.6.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.1/cmake-3.6.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.1/cmake-3.6.1-win32-x86.zip", "fileName": "cmake-3.6.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.6.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-win64-x64.zip", "fileName": "cmake-3.6.0-win64-x64.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.6.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-Linux-i386.tar.gz", "fileName": "cmake-3.6.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.5.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.2/cmake-3.5.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.5.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.2/cmake-3.5.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.5.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.2/cmake-3.5.2-win32-x86.zip", "fileName": "cmake-3.5.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.5.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1-Linux-i386.tar.gz", "fileName": "cmake-3.5.1-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1-win32-x86.zip", "fileName": "cmake-3.5.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.1/cmake-3.5.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.5.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.5.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.0/cmake-3.5.0-win32-x86.zip", "fileName": "cmake-3.5.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.0/cmake-3.5.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.5.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.5.0/cmake-3.5.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.5.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.4.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.3/cmake-3.4.3-Linux-i386.tar.gz", "fileName": "cmake-3.4.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.3/cmake-3.4.3-win32-x86.zip", "fileName": "cmake-3.4.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.3/cmake-3.4.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.4.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.4.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.2/cmake-3.4.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.4.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.2/cmake-3.4.2-Linux-i386.tar.gz", "fileName": "cmake-3.4.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.2/cmake-3.4.2-win32-x86.zip", "fileName": "cmake-3.4.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.4.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.1/cmake-3.4.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.4.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.1/cmake-3.4.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.4.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.1/cmake-3.4.1-win32-x86.zip", "fileName": "cmake-3.4.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.4.0": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.0/cmake-3.4.0-win32-x86.zip", "fileName": "cmake-3.4.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.4.0/cmake-3.4.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.4.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.3.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.2/cmake-3.3.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.3.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.2/cmake-3.3.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.3.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.2/cmake-3.3.2-win32-x86.zip", "fileName": "cmake-3.3.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.3.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.1/cmake-3.3.1-win32-x86.zip", "fileName": "cmake-3.3.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.1/cmake-3.3.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.3.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.1/cmake-3.3.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.3.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.3.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.0/cmake-3.3.0-Linux-x86_64.tar.gz", "fileName": "cmake-3.3.0-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.0/cmake-3.3.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.3.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.3.0/cmake-3.3.0-win32-x86.zip", "fileName": "cmake-3.3.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.2.3": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.3/cmake-3.2.3-Linux-i386.tar.gz", "fileName": "cmake-3.2.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.3/cmake-3.2.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.3/cmake-3.2.3-win32-x86.zip", "fileName": "cmake-3.2.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.2.2": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.2/cmake-3.2.2-win32-x86.zip", "fileName": "cmake-3.2.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.2/cmake-3.2.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.2/cmake-3.2.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.2.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.2.1": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.1/cmake-3.2.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.1/cmake-3.2.1-win32-x86.zip", "fileName": "cmake-3.2.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.1/cmake-3.2.1-Linux-x86_64.tar.gz", "fileName": "cmake-3.2.1-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.2.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.0/cmake-3.2.0-Linux-i386.tar.gz", "fileName": "cmake-3.2.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.0/cmake-3.2.0-win32-x86.zip", "fileName": "cmake-3.2.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.2.0/cmake-3.2.0-Darwin-x86_64.tar.gz", "fileName": "cmake-3.2.0-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.1.3": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-Darwin-x86_64.tar.gz", "fileName": "cmake-3.1.3-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-Linux-i386.tar.gz", "fileName": "cmake-3.1.3-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.3/cmake-3.1.3-win32-x86.zip", "fileName": "cmake-3.1.3-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.1.2": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.2/cmake-3.1.2-Linux-x86_64.tar.gz", "fileName": "cmake-3.1.2-Linux-x86_64.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.2/cmake-3.1.2-Darwin-x86_64.tar.gz", "fileName": "cmake-3.1.2-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.2/cmake-3.1.2-win32-x86.zip", "fileName": "cmake-3.1.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.1.1": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.1/cmake-3.1.1-Linux-i386.tar.gz", "fileName": "cmake-3.1.1-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.1/cmake-3.1.1-Darwin-x86_64.tar.gz", "fileName": "cmake-3.1.1-Darwin-x86_64.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.1/cmake-3.1.1-win32-x86.zip", "fileName": "cmake-3.1.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.1.0": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.0/cmake-3.1.0-Linux-i386.tar.gz", "fileName": "cmake-3.1.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.1.0/cmake-3.1.0-win32-x86.zip", "fileName": "cmake-3.1.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "3.0.2": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-Darwin64-universal.tar.gz", "fileName": "cmake-3.0.2-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-win32-x86.zip", "fileName": "cmake-3.0.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.2/cmake-3.0.2-Linux-i386.tar.gz", "fileName": "cmake-3.0.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "3.0.1": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.1/cmake-3.0.1-win32-x86.zip", "fileName": "cmake-3.0.1-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.1/cmake-3.0.1-Linux-i386.tar.gz", "fileName": "cmake-3.0.1-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.1/cmake-3.0.1-Darwin64-universal.tar.gz", "fileName": "cmake-3.0.1-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "3.0.0": { "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.0/cmake-3.0.0-Darwin64-universal.tar.gz", "fileName": "cmake-3.0.0-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.0/cmake-3.0.0-win32-x86.zip", "fileName": "cmake-3.0.0-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v3.0.0/cmake-3.0.0-Linux-i386.tar.gz", "fileName": "cmake-3.0.0-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } }, "2.8.12": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.12.2/cmake-2.8.12.2-Linux-i386.tar.gz", "fileName": "cmake-2.8.12.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.12.2/cmake-2.8.12.2-Darwin64-universal.tar.gz", "fileName": "cmake-2.8.12.2-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.12.2/cmake-2.8.12.2-win32-x86.zip", "fileName": "cmake-2.8.12.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "2.8.10": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.10.2/cmake-2.8.10.2-win32-x86.zip", "fileName": "cmake-2.8.10.2-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.10.2/cmake-2.8.10.2-Linux-i386.tar.gz", "fileName": "cmake-2.8.10.2-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/Kitware/CMake/releases/download/v2.8.10.2/cmake-2.8.10.2-Darwin64-universal.tar.gz", "fileName": "cmake-2.8.10.2-Darwin64-universal.tar.gz", "binPath": "CMake.app/Contents/bin/", "dropSuffix": ".tar.gz" } }, "2.6.4": { "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.6.4/cmake-2.6.4-Linux-i386.tar.gz", "fileName": "cmake-2.6.4-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" }, "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.6.4/cmake-2.6.4-win32-x86.zip", "fileName": "cmake-2.6.4-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" } }, "2.4.8": { "win32": { "url": "https://github.com/Kitware/CMake/releases/download/v2.4.8/cmake-2.4.8-win32-x86.zip", "fileName": "cmake-2.4.8-win32-x86.zip", "binPath": "bin/", "dropSuffix": ".zip" }, "linux": { "url": "https://github.com/Kitware/CMake/releases/download/v2.4.8/cmake-2.4.8-Linux-i386.tar.gz", "fileName": "cmake-2.4.8-Linux-i386.tar.gz", "binPath": "bin/", "dropSuffix": ".tar.gz" } } }; exports.ninjaCatalog = { "1.11.1": { "linux-arm64": { "url": "https://github.com/Kitware/ninja/releases/download/v1.11.1.g95dee.kitware.jobserver-1/ninja-1.11.1.g95dee.kitware.jobserver-1_aarch64-linux-gnu.tar.gz", "fileName": "ninja-1.11.1.g95dee.kitware.jobserver-1_aarch64-linux-gnu.tar.gz", "binPath": "", "dropSuffix": ".tar.gz" }, "win32-arm64": { "url": "https://github.com/Kitware/ninja/releases/download/v1.11.1.g95dee.kitware.jobserver-1/ninja-1.11.1.g95dee.kitware.jobserver-1_arm64-pc-windows-msvc.zip", "fileName": "ninja-1.11.1.g95dee.kitware.jobserver-1_arm64-pc-windows-msvc.zip", "binPath": "", "dropSuffix": ".zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "latest": { "linux-arm64": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip", "fileName": "ninja-linux-aarch64.zip", "binPath": "", "dropSuffix": "ninja-linux-aarch64.zip" }, "win32-arm64": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-winarm64.zip", "fileName": "ninja-winarm64.zip", "binPath": "", "dropSuffix": "ninja-winarm64.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.10.2": { "linux-arm64": { "url": "https://github.com/Kitware/ninja/releases/download/v1.10.2.g51db2.kitware.jobserver-1/ninja-1.10.2.g51db2.kitware.jobserver-1_aarch64-linux-gnu.tar.gz", "fileName": "ninja-1.10.2.g51db2.kitware.jobserver-1_aarch64-linux-gnu.tar.gz", "binPath": "", "dropSuffix": ".tar.gz" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.10.0": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.9.0": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.8.2": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.7.2": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.7.1": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.7.1/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.7.1/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.7.1/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.12.1": { "linux-arm64": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip", "fileName": "ninja-linux-aarch64.zip", "binPath": "", "dropSuffix": "ninja-linux-aarch64.zip" }, "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" }, "win32-arm64": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-winarm64.zip", "fileName": "ninja-winarm64.zip", "binPath": "", "dropSuffix": "ninja-winarm64.zip" } }, "1.12.0": { "linux-arm64": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.0/ninja-linux-aarch64.zip", "fileName": "ninja-linux-aarch64.zip", "binPath": "", "dropSuffix": "ninja-linux-aarch64.zip" }, "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.0/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.0/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.0/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" }, "win32-arm64": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.12.0/ninja-winarm64.zip", "fileName": "ninja-winarm64.zip", "binPath": "", "dropSuffix": "ninja-winarm64.zip" } }, "1.11.0": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.11.0/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.11.0/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.11.0/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.10.1": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.1/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.1/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.10.1/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.6.0": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.5.3": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.5.3/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.5.3/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.5.3/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.5.1": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.5.1/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.5.1/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.5.1/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } }, "1.4.0": { "linux": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.4.0/ninja-linux.zip", "fileName": "ninja-linux.zip", "binPath": "", "dropSuffix": "ninja-linux.zip" }, "darwin": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.4.0/ninja-mac.zip", "fileName": "ninja-mac.zip", "binPath": "", "dropSuffix": "ninja-mac.zip" }, "win32": { "url": "https://github.com/ninja-build/ninja/releases/download/v1.4.0/ninja-win.zip", "fileName": "ninja-win.zip", "binPath": "", "dropSuffix": "ninja-win.zip" } } }; //# sourceMappingURL=releases-catalog.js.map @@ -508,7 +508,13 @@ CMakeFilters.linuxFilters = [{ suffix: "Linux-i386.tar.gz", platform: linuxX86Platform, }]; -CMakeFilters.windowsFilters = [{ +CMakeFilters.windowsFilters = [ + { + binPath: 'bin/', + dropSuffix: ".zip", + suffix: "windows-arm64.zip", + platform: windowsArmPlatform, + }, { binPath: 'bin/', dropSuffix: ".zip", suffix: "windows-x86_64.zip", @@ -523,7 +529,8 @@ CMakeFilters.windowsFilters = [{ dropSuffix: ".zip", suffix: "win32-x86.zip", platform: windowsPlatform, - }]; + } +]; CMakeFilters.macosFilters = [{ binPath: "CMake.app/Contents/bin/", dropSuffix: '.tar.gz', @@ -688,7 +695,10 @@ const core = __importStar(__nccwpck_require__(2186)); const path = __importStar(__nccwpck_require__(1017)); const utils = __importStar(__nccwpck_require__(1518)); const cacheHttpClient = __importStar(__nccwpck_require__(8245)); +const cacheTwirpClient = __importStar(__nccwpck_require__(2502)); +const config_1 = __nccwpck_require__(5147); const tar_1 = __nccwpck_require__(6490); +const constants_1 = __nccwpck_require__(8840); class ValidationError extends Error { constructor(message) { super(message); @@ -732,15 +742,39 @@ exports.isFeatureAvailable = isFeatureAvailable; * Restores cache from keys * * @param paths a list of file paths to restore from the cache - * @param primaryKey an explicit key for restoring the cache - * @param restoreKeys an optional ordered list of keys to use for restoring the cache if no cache hit occurred for key + * @param primaryKey an explicit key for restoring the cache. Lookup is done with prefix matching. + * @param restoreKeys an optional ordered list of keys to use for restoring the cache if no cache hit occurred for primaryKey * @param downloadOptions cache download options * @param enableCrossOsArchive an optional boolean enabled to restore on windows any cache created on any platform * @returns string returns the key for the cache hit, otherwise returns undefined */ function restoreCache(paths, primaryKey, restoreKeys, options, enableCrossOsArchive = false) { return __awaiter(this, void 0, void 0, function* () { + const cacheServiceVersion = (0, config_1.getCacheServiceVersion)(); + core.debug(`Cache service version: ${cacheServiceVersion}`); checkPaths(paths); + switch (cacheServiceVersion) { + case 'v2': + return yield restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsArchive); + case 'v1': + default: + return yield restoreCacheV1(paths, primaryKey, restoreKeys, options, enableCrossOsArchive); + } + }); +} +exports.restoreCache = restoreCache; +/** + * Restores cache using the legacy Cache Service + * + * @param paths a list of file paths to restore from the cache + * @param primaryKey an explicit key for restoring the cache. Lookup is done with prefix matching. + * @param restoreKeys an optional ordered list of keys to use for restoring the cache if no cache hit occurred for primaryKey + * @param options cache download options + * @param enableCrossOsArchive an optional boolean enabled to restore on Windows any cache created on any platform + * @returns string returns the key for the cache hit, otherwise returns undefined + */ +function restoreCacheV1(paths, primaryKey, restoreKeys, options, enableCrossOsArchive = false) { + return __awaiter(this, void 0, void 0, function* () { restoreKeys = restoreKeys || []; const keys = [primaryKey, ...restoreKeys]; core.debug('Resolved Keys:'); @@ -802,7 +836,85 @@ function restoreCache(paths, primaryKey, restoreKeys, options, enableCrossOsArch return undefined; }); } -exports.restoreCache = restoreCache; +/** + * Restores cache using Cache Service v2 + * + * @param paths a list of file paths to restore from the cache + * @param primaryKey an explicit key for restoring the cache. Lookup is done with prefix matching + * @param restoreKeys an optional ordered list of keys to use for restoring the cache if no cache hit occurred for primaryKey + * @param downloadOptions cache download options + * @param enableCrossOsArchive an optional boolean enabled to restore on windows any cache created on any platform + * @returns string returns the key for the cache hit, otherwise returns undefined + */ +function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsArchive = false) { + return __awaiter(this, void 0, void 0, function* () { + // Override UploadOptions to force the use of Azure + options = Object.assign(Object.assign({}, options), { useAzureSdk: true }); + restoreKeys = restoreKeys || []; + const keys = [primaryKey, ...restoreKeys]; + core.debug('Resolved Keys:'); + core.debug(JSON.stringify(keys)); + if (keys.length > 10) { + throw new ValidationError(`Key Validation Error: Keys are limited to a maximum of 10.`); + } + for (const key of keys) { + checkKey(key); + } + let archivePath = ''; + try { + const twirpClient = cacheTwirpClient.internalCacheTwirpClient(); + const compressionMethod = yield utils.getCompressionMethod(); + const request = { + key: primaryKey, + restoreKeys, + version: utils.getCacheVersion(paths, compressionMethod, enableCrossOsArchive) + }; + const response = yield twirpClient.GetCacheEntryDownloadURL(request); + if (!response.ok) { + core.warning(`Cache not found for keys: ${keys.join(', ')}`); + return undefined; + } + core.info(`Cache hit for: ${request.key}`); + if (options === null || options === void 0 ? void 0 : options.lookupOnly) { + core.info('Lookup only - skipping download'); + return response.matchedKey; + } + archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); + core.debug(`Archive path: ${archivePath}`); + core.debug(`Starting download of archive to: ${archivePath}`); + yield cacheHttpClient.downloadCache(response.signedDownloadUrl, archivePath, options); + const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath); + core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); + if (core.isDebug()) { + yield (0, tar_1.listTar)(archivePath, compressionMethod); + } + yield (0, tar_1.extractTar)(archivePath, compressionMethod); + core.info('Cache restored successfully'); + return response.matchedKey; + } + catch (error) { + const typedError = error; + if (typedError.name === ValidationError.name) { + throw error; + } + else { + // Supress all non-validation cache related errors because caching should be optional + core.warning(`Failed to restore: ${error.message}`); + } + } + finally { + try { + if (archivePath) { + yield utils.unlinkFile(archivePath); + } + } + catch (error) { + core.debug(`Failed to delete archive: ${error}`); + } + } + return undefined; + }); +} /** * Saves a list of files with the specified key * @@ -813,10 +925,33 @@ exports.restoreCache = restoreCache; * @returns number returns cacheId if the cache was saved successfully and throws an error if save fails */ function saveCache(paths, key, options, enableCrossOsArchive = false) { - var _a, _b, _c, _d, _e; return __awaiter(this, void 0, void 0, function* () { + const cacheServiceVersion = (0, config_1.getCacheServiceVersion)(); + core.debug(`Cache service version: ${cacheServiceVersion}`); checkPaths(paths); checkKey(key); + switch (cacheServiceVersion) { + case 'v2': + return yield saveCacheV2(paths, key, options, enableCrossOsArchive); + case 'v1': + default: + return yield saveCacheV1(paths, key, options, enableCrossOsArchive); + } + }); +} +exports.saveCache = saveCache; +/** + * Save cache using the legacy Cache Service + * + * @param paths + * @param key + * @param options + * @param enableCrossOsArchive + * @returns + */ +function saveCacheV1(paths, key, options, enableCrossOsArchive = false) { + var _a, _b, _c, _d, _e; + return __awaiter(this, void 0, void 0, function* () { const compressionMethod = yield utils.getCompressionMethod(); let cacheId = -1; const cachePaths = yield utils.resolvePaths(paths); @@ -837,7 +972,7 @@ function saveCache(paths, key, options, enableCrossOsArchive = false) { const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath); core.debug(`File Size: ${archiveFileSize}`); // For GHES, this check will take place in ReserveCache API with enterprise file size limit - if (archiveFileSize > fileSizeLimit && !utils.isGhes()) { + if (archiveFileSize > fileSizeLimit && !(0, config_1.isGhes)()) { throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 10GB limit, not saving cache.`); } core.debug('Reserving Cache'); @@ -856,7 +991,95 @@ function saveCache(paths, key, options, enableCrossOsArchive = false) { throw new ReserveCacheError(`Unable to reserve cache with key ${key}, another job may be creating this cache. More details: ${(_e = reserveCacheResponse === null || reserveCacheResponse === void 0 ? void 0 : reserveCacheResponse.error) === null || _e === void 0 ? void 0 : _e.message}`); } core.debug(`Saving Cache (ID: ${cacheId})`); - yield cacheHttpClient.saveCache(cacheId, archivePath, options); + yield cacheHttpClient.saveCache(cacheId, archivePath, '', options); + } + catch (error) { + const typedError = error; + if (typedError.name === ValidationError.name) { + throw error; + } + else if (typedError.name === ReserveCacheError.name) { + core.info(`Failed to save: ${typedError.message}`); + } + else { + core.warning(`Failed to save: ${typedError.message}`); + } + } + finally { + // Try to delete the archive to save space + try { + yield utils.unlinkFile(archivePath); + } + catch (error) { + core.debug(`Failed to delete archive: ${error}`); + } + } + return cacheId; + }); +} +/** + * Save cache using Cache Service v2 + * + * @param paths a list of file paths to restore from the cache + * @param key an explicit key for restoring the cache + * @param options cache upload options + * @param enableCrossOsArchive an optional boolean enabled to save cache on windows which could be restored on any platform + * @returns + */ +function saveCacheV2(paths, key, options, enableCrossOsArchive = false) { + return __awaiter(this, void 0, void 0, function* () { + // Override UploadOptions to force the use of Azure + // ...options goes first because we want to override the default values + // set in UploadOptions with these specific figures + options = Object.assign(Object.assign({}, options), { uploadChunkSize: 64 * 1024 * 1024, uploadConcurrency: 8, useAzureSdk: true }); + const compressionMethod = yield utils.getCompressionMethod(); + const twirpClient = cacheTwirpClient.internalCacheTwirpClient(); + let cacheId = -1; + const cachePaths = yield utils.resolvePaths(paths); + core.debug('Cache Paths:'); + core.debug(`${JSON.stringify(cachePaths)}`); + if (cachePaths.length === 0) { + throw new Error(`Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.`); + } + const archiveFolder = yield utils.createTempDirectory(); + const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod)); + core.debug(`Archive Path: ${archivePath}`); + try { + yield (0, tar_1.createTar)(archiveFolder, cachePaths, compressionMethod); + if (core.isDebug()) { + yield (0, tar_1.listTar)(archivePath, compressionMethod); + } + const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath); + core.debug(`File Size: ${archiveFileSize}`); + // For GHES, this check will take place in ReserveCache API with enterprise file size limit + if (archiveFileSize > constants_1.CacheFileSizeLimit && !(0, config_1.isGhes)()) { + throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 10GB limit, not saving cache.`); + } + // Set the archive size in the options, will be used to display the upload progress + options.archiveSizeBytes = archiveFileSize; + core.debug('Reserving Cache'); + const version = utils.getCacheVersion(paths, compressionMethod, enableCrossOsArchive); + const request = { + key, + version + }; + const response = yield twirpClient.CreateCacheEntry(request); + if (!response.ok) { + throw new ReserveCacheError(`Unable to reserve cache with key ${key}, another job may be creating this cache.`); + } + core.debug(`Attempting to upload cache located at: ${archivePath}`); + yield cacheHttpClient.saveCache(cacheId, archivePath, response.signedUploadUrl, options); + const finalizeRequest = { + key, + version, + sizeBytes: `${archiveFileSize}` + }; + const finalizeResponse = yield twirpClient.FinalizeCacheEntryUpload(finalizeRequest); + core.debug(`FinalizeCacheEntryUploadResponse: ${finalizeResponse.ok}`); + if (!finalizeResponse.ok) { + throw new Error(`Unable to finalize cache with key ${key}, another job may be finalizing this cache.`); + } + cacheId = parseInt(finalizeResponse.entryId); } catch (error) { const typedError = error; @@ -882,39 +1105,895 @@ function saveCache(paths, key, options, enableCrossOsArchive = false) { return cacheId; }); } -exports.saveCache = saveCache; //# sourceMappingURL=cache.js.map /***/ }), -/***/ 8245: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ 4469: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Timestamp = void 0; +const runtime_1 = __nccwpck_require__(4061); +const runtime_2 = __nccwpck_require__(4061); +const runtime_3 = __nccwpck_require__(4061); +const runtime_4 = __nccwpck_require__(4061); +const runtime_5 = __nccwpck_require__(4061); +const runtime_6 = __nccwpck_require__(4061); +const runtime_7 = __nccwpck_require__(4061); +// @generated message type with reflection information, may provide speed optimized methods +class Timestamp$Type extends runtime_7.MessageType { + constructor() { + super("google.protobuf.Timestamp", [ + { no: 1, name: "seconds", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, + { no: 2, name: "nanos", kind: "scalar", T: 5 /*ScalarType.INT32*/ } + ]); } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; + /** + * Creates a new `Timestamp` for the current time. + */ + now() { + const msg = this.create(); + const ms = Date.now(); + msg.seconds = runtime_6.PbLong.from(Math.floor(ms / 1000)).toString(); + msg.nanos = (ms % 1000) * 1000000; + return msg; + } + /** + * Converts a `Timestamp` to a JavaScript Date. + */ + toDate(message) { + return new Date(runtime_6.PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000)); + } + /** + * Converts a JavaScript Date to a `Timestamp`. + */ + fromDate(date) { + const msg = this.create(); + const ms = date.getTime(); + msg.seconds = runtime_6.PbLong.from(Math.floor(ms / 1000)).toString(); + msg.nanos = (ms % 1000) * 1000000; + return msg; + } + /** + * In JSON format, the `Timestamp` type is encoded as a string + * in the RFC 3339 format. + */ + internalJsonWrite(message, options) { + let ms = runtime_6.PbLong.from(message.seconds).toNumber() * 1000; + if (ms < Date.parse("0001-01-01T00:00:00Z") || ms > Date.parse("9999-12-31T23:59:59Z")) + throw new Error("Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive."); + if (message.nanos < 0) + throw new Error("Unable to encode invalid Timestamp to JSON. Nanos must not be negative."); + let z = "Z"; + if (message.nanos > 0) { + let nanosStr = (message.nanos + 1000000000).toString().substring(1); + if (nanosStr.substring(3) === "000000") + z = "." + nanosStr.substring(0, 3) + "Z"; + else if (nanosStr.substring(6) === "000") + z = "." + nanosStr.substring(0, 6) + "Z"; + else + z = "." + nanosStr + "Z"; + } + return new Date(ms).toISOString().replace(".000Z", z); + } + /** + * In JSON format, the `Timestamp` type is encoded as a string + * in the RFC 3339 format. + */ + internalJsonRead(json, options, target) { + if (typeof json !== "string") + throw new Error("Unable to parse Timestamp from JSON " + (0, runtime_5.typeofJsonValue)(json) + "."); + let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/); + if (!matches) + throw new Error("Unable to parse Timestamp from JSON. Invalid format."); + let ms = Date.parse(matches[1] + "-" + matches[2] + "-" + matches[3] + "T" + matches[4] + ":" + matches[5] + ":" + matches[6] + (matches[8] ? matches[8] : "Z")); + if (Number.isNaN(ms)) + throw new Error("Unable to parse Timestamp from JSON. Invalid value."); + if (ms < Date.parse("0001-01-01T00:00:00Z") || ms > Date.parse("9999-12-31T23:59:59Z")) + throw new globalThis.Error("Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive."); + if (!target) + target = this.create(); + target.seconds = runtime_6.PbLong.from(ms / 1000).toString(); + target.nanos = 0; + if (matches[7]) + target.nanos = (parseInt("1" + matches[7] + "0".repeat(9 - matches[7].length)) - 1000000000); + return target; + } + create(value) { + const message = { seconds: "0", nanos: 0 }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* int64 seconds */ 1: + message.seconds = reader.int64().toString(); + break; + case /* int32 nanos */ 2: + message.nanos = reader.int32(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* int64 seconds = 1; */ + if (message.seconds !== "0") + writer.tag(1, runtime_1.WireType.Varint).int64(message.seconds); + /* int32 nanos = 2; */ + if (message.nanos !== 0) + writer.tag(2, runtime_1.WireType.Varint).int32(message.nanos); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message google.protobuf.Timestamp + */ +exports.Timestamp = new Timestamp$Type(); +//# sourceMappingURL=timestamp.js.map + +/***/ }), + +/***/ 4388: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CacheService = exports.LookupCacheEntryResponse = exports.LookupCacheEntryRequest = exports.ListCacheEntriesResponse = exports.ListCacheEntriesRequest = exports.DeleteCacheEntryResponse = exports.DeleteCacheEntryRequest = exports.GetCacheEntryDownloadURLResponse = exports.GetCacheEntryDownloadURLRequest = exports.FinalizeCacheEntryUploadResponse = exports.FinalizeCacheEntryUploadRequest = exports.CreateCacheEntryResponse = exports.CreateCacheEntryRequest = void 0; +// @generated by protobuf-ts 2.9.1 with parameter long_type_string,client_none,generate_dependencies +// @generated from protobuf file "results/api/v1/cache.proto" (package "github.actions.results.api.v1", syntax proto3) +// tslint:disable +const runtime_rpc_1 = __nccwpck_require__(12); +const runtime_1 = __nccwpck_require__(4061); +const runtime_2 = __nccwpck_require__(4061); +const runtime_3 = __nccwpck_require__(4061); +const runtime_4 = __nccwpck_require__(4061); +const runtime_5 = __nccwpck_require__(4061); +const cacheentry_1 = __nccwpck_require__(3639); +const cachemetadata_1 = __nccwpck_require__(7988); +// @generated message type with reflection information, may provide speed optimized methods +class CreateCacheEntryRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.CreateCacheEntryRequest", [ + { no: 1, name: "metadata", kind: "message", T: () => cachemetadata_1.CacheMetadata }, + { no: 2, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { key: "", version: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* github.actions.results.entities.v1.CacheMetadata metadata */ 1: + message.metadata = cachemetadata_1.CacheMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata); + break; + case /* string key */ 2: + message.key = reader.string(); + break; + case /* string version */ 3: + message.version = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* github.actions.results.entities.v1.CacheMetadata metadata = 1; */ + if (message.metadata) + cachemetadata_1.CacheMetadata.internalBinaryWrite(message.metadata, writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* string key = 2; */ + if (message.key !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.key); + /* string version = 3; */ + if (message.version !== "") + writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.version); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.CreateCacheEntryRequest + */ +exports.CreateCacheEntryRequest = new CreateCacheEntryRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CreateCacheEntryResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.CreateCacheEntryResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { ok: false, signedUploadUrl: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* string signed_upload_url */ 2: + message.signedUploadUrl = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* string signed_upload_url = 2; */ + if (message.signedUploadUrl !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.signedUploadUrl); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.CreateCacheEntryResponse + */ +exports.CreateCacheEntryResponse = new CreateCacheEntryResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class FinalizeCacheEntryUploadRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.FinalizeCacheEntryUploadRequest", [ + { no: 1, name: "metadata", kind: "message", T: () => cachemetadata_1.CacheMetadata }, + { no: 2, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "size_bytes", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, + { no: 4, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { key: "", sizeBytes: "0", version: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* github.actions.results.entities.v1.CacheMetadata metadata */ 1: + message.metadata = cachemetadata_1.CacheMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata); + break; + case /* string key */ 2: + message.key = reader.string(); + break; + case /* int64 size_bytes */ 3: + message.sizeBytes = reader.int64().toString(); + break; + case /* string version */ 4: + message.version = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* github.actions.results.entities.v1.CacheMetadata metadata = 1; */ + if (message.metadata) + cachemetadata_1.CacheMetadata.internalBinaryWrite(message.metadata, writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* string key = 2; */ + if (message.key !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.key); + /* int64 size_bytes = 3; */ + if (message.sizeBytes !== "0") + writer.tag(3, runtime_1.WireType.Varint).int64(message.sizeBytes); + /* string version = 4; */ + if (message.version !== "") + writer.tag(4, runtime_1.WireType.LengthDelimited).string(message.version); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.FinalizeCacheEntryUploadRequest + */ +exports.FinalizeCacheEntryUploadRequest = new FinalizeCacheEntryUploadRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.FinalizeCacheEntryUploadResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "entry_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { ok: false, entryId: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* int64 entry_id */ 2: + message.entryId = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* int64 entry_id = 2; */ + if (message.entryId !== "0") + writer.tag(2, runtime_1.WireType.Varint).int64(message.entryId); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.FinalizeCacheEntryUploadResponse + */ +exports.FinalizeCacheEntryUploadResponse = new FinalizeCacheEntryUploadResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class GetCacheEntryDownloadURLRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.GetCacheEntryDownloadURLRequest", [ + { no: 1, name: "metadata", kind: "message", T: () => cachemetadata_1.CacheMetadata }, + { no: 2, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "restore_keys", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }, + { no: 4, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { key: "", restoreKeys: [], version: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* github.actions.results.entities.v1.CacheMetadata metadata */ 1: + message.metadata = cachemetadata_1.CacheMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata); + break; + case /* string key */ 2: + message.key = reader.string(); + break; + case /* repeated string restore_keys */ 3: + message.restoreKeys.push(reader.string()); + break; + case /* string version */ 4: + message.version = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* github.actions.results.entities.v1.CacheMetadata metadata = 1; */ + if (message.metadata) + cachemetadata_1.CacheMetadata.internalBinaryWrite(message.metadata, writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* string key = 2; */ + if (message.key !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.key); + /* repeated string restore_keys = 3; */ + for (let i = 0; i < message.restoreKeys.length; i++) + writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.restoreKeys[i]); + /* string version = 4; */ + if (message.version !== "") + writer.tag(4, runtime_1.WireType.LengthDelimited).string(message.version); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.GetCacheEntryDownloadURLRequest + */ +exports.GetCacheEntryDownloadURLRequest = new GetCacheEntryDownloadURLRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class GetCacheEntryDownloadURLResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.GetCacheEntryDownloadURLResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "signed_download_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "matched_key", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { ok: false, signedDownloadUrl: "", matchedKey: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* string signed_download_url */ 2: + message.signedDownloadUrl = reader.string(); + break; + case /* string matched_key */ 3: + message.matchedKey = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* string signed_download_url = 2; */ + if (message.signedDownloadUrl !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.signedDownloadUrl); + /* string matched_key = 3; */ + if (message.matchedKey !== "") + writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.matchedKey); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.GetCacheEntryDownloadURLResponse + */ +exports.GetCacheEntryDownloadURLResponse = new GetCacheEntryDownloadURLResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class DeleteCacheEntryRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.DeleteCacheEntryRequest", [ + { no: 1, name: "metadata", kind: "message", T: () => cachemetadata_1.CacheMetadata }, + { no: 2, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { key: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* github.actions.results.entities.v1.CacheMetadata metadata */ 1: + message.metadata = cachemetadata_1.CacheMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata); + break; + case /* string key */ 2: + message.key = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* github.actions.results.entities.v1.CacheMetadata metadata = 1; */ + if (message.metadata) + cachemetadata_1.CacheMetadata.internalBinaryWrite(message.metadata, writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* string key = 2; */ + if (message.key !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.key); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.DeleteCacheEntryRequest + */ +exports.DeleteCacheEntryRequest = new DeleteCacheEntryRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class DeleteCacheEntryResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.DeleteCacheEntryResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "entry_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { ok: false, entryId: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* int64 entry_id */ 2: + message.entryId = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* int64 entry_id = 2; */ + if (message.entryId !== "0") + writer.tag(2, runtime_1.WireType.Varint).int64(message.entryId); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.DeleteCacheEntryResponse + */ +exports.DeleteCacheEntryResponse = new DeleteCacheEntryResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class ListCacheEntriesRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.ListCacheEntriesRequest", [ + { no: 1, name: "metadata", kind: "message", T: () => cachemetadata_1.CacheMetadata }, + { no: 2, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "restore_keys", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { key: "", restoreKeys: [] }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* github.actions.results.entities.v1.CacheMetadata metadata */ 1: + message.metadata = cachemetadata_1.CacheMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata); + break; + case /* string key */ 2: + message.key = reader.string(); + break; + case /* repeated string restore_keys */ 3: + message.restoreKeys.push(reader.string()); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* github.actions.results.entities.v1.CacheMetadata metadata = 1; */ + if (message.metadata) + cachemetadata_1.CacheMetadata.internalBinaryWrite(message.metadata, writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* string key = 2; */ + if (message.key !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.key); + /* repeated string restore_keys = 3; */ + for (let i = 0; i < message.restoreKeys.length; i++) + writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.restoreKeys[i]); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.ListCacheEntriesRequest + */ +exports.ListCacheEntriesRequest = new ListCacheEntriesRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class ListCacheEntriesResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.ListCacheEntriesResponse", [ + { no: 1, name: "entries", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => cacheentry_1.CacheEntry } + ]); + } + create(value) { + const message = { entries: [] }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* repeated github.actions.results.entities.v1.CacheEntry entries */ 1: + message.entries.push(cacheentry_1.CacheEntry.internalBinaryRead(reader, reader.uint32(), options)); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* repeated github.actions.results.entities.v1.CacheEntry entries = 1; */ + for (let i = 0; i < message.entries.length; i++) + cacheentry_1.CacheEntry.internalBinaryWrite(message.entries[i], writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.ListCacheEntriesResponse + */ +exports.ListCacheEntriesResponse = new ListCacheEntriesResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class LookupCacheEntryRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.LookupCacheEntryRequest", [ + { no: 1, name: "metadata", kind: "message", T: () => cachemetadata_1.CacheMetadata }, + { no: 2, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "restore_keys", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }, + { no: 4, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { key: "", restoreKeys: [], version: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* github.actions.results.entities.v1.CacheMetadata metadata */ 1: + message.metadata = cachemetadata_1.CacheMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata); + break; + case /* string key */ 2: + message.key = reader.string(); + break; + case /* repeated string restore_keys */ 3: + message.restoreKeys.push(reader.string()); + break; + case /* string version */ 4: + message.version = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* github.actions.results.entities.v1.CacheMetadata metadata = 1; */ + if (message.metadata) + cachemetadata_1.CacheMetadata.internalBinaryWrite(message.metadata, writer.tag(1, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* string key = 2; */ + if (message.key !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.key); + /* repeated string restore_keys = 3; */ + for (let i = 0; i < message.restoreKeys.length; i++) + writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.restoreKeys[i]); + /* string version = 4; */ + if (message.version !== "") + writer.tag(4, runtime_1.WireType.LengthDelimited).string(message.version); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.LookupCacheEntryRequest + */ +exports.LookupCacheEntryRequest = new LookupCacheEntryRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class LookupCacheEntryResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.LookupCacheEntryResponse", [ + { no: 1, name: "exists", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "entry", kind: "message", T: () => cacheentry_1.CacheEntry } + ]); + } + create(value) { + const message = { exists: false }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool exists */ 1: + message.exists = reader.bool(); + break; + case /* github.actions.results.entities.v1.CacheEntry entry */ 2: + message.entry = cacheentry_1.CacheEntry.internalBinaryRead(reader, reader.uint32(), options, message.entry); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool exists = 1; */ + if (message.exists !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.exists); + /* github.actions.results.entities.v1.CacheEntry entry = 2; */ + if (message.entry) + cacheentry_1.CacheEntry.internalBinaryWrite(message.entry, writer.tag(2, runtime_1.WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.LookupCacheEntryResponse + */ +exports.LookupCacheEntryResponse = new LookupCacheEntryResponse$Type(); +/** + * @generated ServiceType for protobuf service github.actions.results.api.v1.CacheService + */ +exports.CacheService = new runtime_rpc_1.ServiceType("github.actions.results.api.v1.CacheService", [ + { name: "CreateCacheEntry", options: {}, I: exports.CreateCacheEntryRequest, O: exports.CreateCacheEntryResponse }, + { name: "FinalizeCacheEntryUpload", options: {}, I: exports.FinalizeCacheEntryUploadRequest, O: exports.FinalizeCacheEntryUploadResponse }, + { name: "GetCacheEntryDownloadURL", options: {}, I: exports.GetCacheEntryDownloadURLRequest, O: exports.GetCacheEntryDownloadURLResponse }, + { name: "DeleteCacheEntry", options: {}, I: exports.DeleteCacheEntryRequest, O: exports.DeleteCacheEntryResponse }, + { name: "ListCacheEntries", options: {}, I: exports.ListCacheEntriesRequest, O: exports.ListCacheEntriesResponse }, + { name: "LookupCacheEntry", options: {}, I: exports.LookupCacheEntryRequest, O: exports.LookupCacheEntryResponse } +]); +//# sourceMappingURL=cache.js.map + +/***/ }), + +/***/ 267: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -925,158 +2004,1029 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.saveCache = exports.reserveCache = exports.downloadCache = exports.getCacheEntry = exports.getCacheVersion = void 0; -const core = __importStar(__nccwpck_require__(2186)); -const http_client_1 = __nccwpck_require__(6255); -const auth_1 = __nccwpck_require__(5526); -const crypto = __importStar(__nccwpck_require__(6113)); -const fs = __importStar(__nccwpck_require__(7147)); -const url_1 = __nccwpck_require__(7310); -const utils = __importStar(__nccwpck_require__(1518)); -const downloadUtils_1 = __nccwpck_require__(5500); -const options_1 = __nccwpck_require__(6215); -const requestUtils_1 = __nccwpck_require__(3981); -const versionSalt = '1.0'; -function getCacheApiUrl(resource) { - const baseUrl = process.env['ACTIONS_CACHE_URL'] || ''; - if (!baseUrl) { - throw new Error('Cache Service Url not found, unable to restore cache.'); +exports.createCacheServiceServer = exports.CacheServiceMethodList = exports.CacheServiceMethod = exports.CacheServiceClientProtobuf = exports.CacheServiceClientJSON = void 0; +const twirp_ts_1 = __nccwpck_require__(6465); +const cache_1 = __nccwpck_require__(4388); +class CacheServiceClientJSON { + constructor(rpc) { + this.rpc = rpc; + this.CreateCacheEntry.bind(this); + this.FinalizeCacheEntryUpload.bind(this); + this.GetCacheEntryDownloadURL.bind(this); + this.DeleteCacheEntry.bind(this); + this.ListCacheEntries.bind(this); + this.LookupCacheEntry.bind(this); + } + CreateCacheEntry(request) { + const data = cache_1.CreateCacheEntryRequest.toJson(request, { + useProtoFieldName: true, + emitDefaultValues: false, + }); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "CreateCacheEntry", "application/json", data); + return promise.then((data) => cache_1.CreateCacheEntryResponse.fromJson(data, { + ignoreUnknownFields: true, + })); + } + FinalizeCacheEntryUpload(request) { + const data = cache_1.FinalizeCacheEntryUploadRequest.toJson(request, { + useProtoFieldName: true, + emitDefaultValues: false, + }); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "FinalizeCacheEntryUpload", "application/json", data); + return promise.then((data) => cache_1.FinalizeCacheEntryUploadResponse.fromJson(data, { + ignoreUnknownFields: true, + })); + } + GetCacheEntryDownloadURL(request) { + const data = cache_1.GetCacheEntryDownloadURLRequest.toJson(request, { + useProtoFieldName: true, + emitDefaultValues: false, + }); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "GetCacheEntryDownloadURL", "application/json", data); + return promise.then((data) => cache_1.GetCacheEntryDownloadURLResponse.fromJson(data, { + ignoreUnknownFields: true, + })); + } + DeleteCacheEntry(request) { + const data = cache_1.DeleteCacheEntryRequest.toJson(request, { + useProtoFieldName: true, + emitDefaultValues: false, + }); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "DeleteCacheEntry", "application/json", data); + return promise.then((data) => cache_1.DeleteCacheEntryResponse.fromJson(data, { + ignoreUnknownFields: true, + })); + } + ListCacheEntries(request) { + const data = cache_1.ListCacheEntriesRequest.toJson(request, { + useProtoFieldName: true, + emitDefaultValues: false, + }); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "ListCacheEntries", "application/json", data); + return promise.then((data) => cache_1.ListCacheEntriesResponse.fromJson(data, { + ignoreUnknownFields: true, + })); + } + LookupCacheEntry(request) { + const data = cache_1.LookupCacheEntryRequest.toJson(request, { + useProtoFieldName: true, + emitDefaultValues: false, + }); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "LookupCacheEntry", "application/json", data); + return promise.then((data) => cache_1.LookupCacheEntryResponse.fromJson(data, { + ignoreUnknownFields: true, + })); } - const url = `${baseUrl}_apis/artifactcache/${resource}`; - core.debug(`Resource Url: ${url}`); - return url; } -function createAcceptHeader(type, apiVersion) { - return `${type};api-version=${apiVersion}`; +exports.CacheServiceClientJSON = CacheServiceClientJSON; +class CacheServiceClientProtobuf { + constructor(rpc) { + this.rpc = rpc; + this.CreateCacheEntry.bind(this); + this.FinalizeCacheEntryUpload.bind(this); + this.GetCacheEntryDownloadURL.bind(this); + this.DeleteCacheEntry.bind(this); + this.ListCacheEntries.bind(this); + this.LookupCacheEntry.bind(this); + } + CreateCacheEntry(request) { + const data = cache_1.CreateCacheEntryRequest.toBinary(request); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "CreateCacheEntry", "application/protobuf", data); + return promise.then((data) => cache_1.CreateCacheEntryResponse.fromBinary(data)); + } + FinalizeCacheEntryUpload(request) { + const data = cache_1.FinalizeCacheEntryUploadRequest.toBinary(request); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "FinalizeCacheEntryUpload", "application/protobuf", data); + return promise.then((data) => cache_1.FinalizeCacheEntryUploadResponse.fromBinary(data)); + } + GetCacheEntryDownloadURL(request) { + const data = cache_1.GetCacheEntryDownloadURLRequest.toBinary(request); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "GetCacheEntryDownloadURL", "application/protobuf", data); + return promise.then((data) => cache_1.GetCacheEntryDownloadURLResponse.fromBinary(data)); + } + DeleteCacheEntry(request) { + const data = cache_1.DeleteCacheEntryRequest.toBinary(request); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "DeleteCacheEntry", "application/protobuf", data); + return promise.then((data) => cache_1.DeleteCacheEntryResponse.fromBinary(data)); + } + ListCacheEntries(request) { + const data = cache_1.ListCacheEntriesRequest.toBinary(request); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "ListCacheEntries", "application/protobuf", data); + return promise.then((data) => cache_1.ListCacheEntriesResponse.fromBinary(data)); + } + LookupCacheEntry(request) { + const data = cache_1.LookupCacheEntryRequest.toBinary(request); + const promise = this.rpc.request("github.actions.results.api.v1.CacheService", "LookupCacheEntry", "application/protobuf", data); + return promise.then((data) => cache_1.LookupCacheEntryResponse.fromBinary(data)); + } +} +exports.CacheServiceClientProtobuf = CacheServiceClientProtobuf; +var CacheServiceMethod; +(function (CacheServiceMethod) { + CacheServiceMethod["CreateCacheEntry"] = "CreateCacheEntry"; + CacheServiceMethod["FinalizeCacheEntryUpload"] = "FinalizeCacheEntryUpload"; + CacheServiceMethod["GetCacheEntryDownloadURL"] = "GetCacheEntryDownloadURL"; + CacheServiceMethod["DeleteCacheEntry"] = "DeleteCacheEntry"; + CacheServiceMethod["ListCacheEntries"] = "ListCacheEntries"; + CacheServiceMethod["LookupCacheEntry"] = "LookupCacheEntry"; +})(CacheServiceMethod || (exports.CacheServiceMethod = CacheServiceMethod = {})); +exports.CacheServiceMethodList = [ + CacheServiceMethod.CreateCacheEntry, + CacheServiceMethod.FinalizeCacheEntryUpload, + CacheServiceMethod.GetCacheEntryDownloadURL, + CacheServiceMethod.DeleteCacheEntry, + CacheServiceMethod.ListCacheEntries, + CacheServiceMethod.LookupCacheEntry, +]; +function createCacheServiceServer(service) { + return new twirp_ts_1.TwirpServer({ + service, + packageName: "github.actions.results.api.v1", + serviceName: "CacheService", + methodList: exports.CacheServiceMethodList, + matchRoute: matchCacheServiceRoute, + }); } -function getRequestOptions() { - const requestOptions = { - headers: { - Accept: createAcceptHeader('application/json', '6.0-preview.1') - } - }; - return requestOptions; +exports.createCacheServiceServer = createCacheServiceServer; +function matchCacheServiceRoute(method, events) { + switch (method) { + case "CreateCacheEntry": + return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { + ctx = Object.assign(Object.assign({}, ctx), { methodName: "CreateCacheEntry" }); + yield events.onMatch(ctx); + return handleCacheServiceCreateCacheEntryRequest(ctx, service, data, interceptors); + }); + case "FinalizeCacheEntryUpload": + return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { + ctx = Object.assign(Object.assign({}, ctx), { methodName: "FinalizeCacheEntryUpload" }); + yield events.onMatch(ctx); + return handleCacheServiceFinalizeCacheEntryUploadRequest(ctx, service, data, interceptors); + }); + case "GetCacheEntryDownloadURL": + return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { + ctx = Object.assign(Object.assign({}, ctx), { methodName: "GetCacheEntryDownloadURL" }); + yield events.onMatch(ctx); + return handleCacheServiceGetCacheEntryDownloadURLRequest(ctx, service, data, interceptors); + }); + case "DeleteCacheEntry": + return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { + ctx = Object.assign(Object.assign({}, ctx), { methodName: "DeleteCacheEntry" }); + yield events.onMatch(ctx); + return handleCacheServiceDeleteCacheEntryRequest(ctx, service, data, interceptors); + }); + case "ListCacheEntries": + return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { + ctx = Object.assign(Object.assign({}, ctx), { methodName: "ListCacheEntries" }); + yield events.onMatch(ctx); + return handleCacheServiceListCacheEntriesRequest(ctx, service, data, interceptors); + }); + case "LookupCacheEntry": + return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { + ctx = Object.assign(Object.assign({}, ctx), { methodName: "LookupCacheEntry" }); + yield events.onMatch(ctx); + return handleCacheServiceLookupCacheEntryRequest(ctx, service, data, interceptors); + }); + default: + events.onNotFound(); + const msg = `no handler found`; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); + } } -function createHttpClient() { - const token = process.env['ACTIONS_RUNTIME_TOKEN'] || ''; - const bearerCredentialHandler = new auth_1.BearerCredentialHandler(token); - return new http_client_1.HttpClient('actions/cache', [bearerCredentialHandler], getRequestOptions()); +function handleCacheServiceCreateCacheEntryRequest(ctx, service, data, interceptors) { + switch (ctx.contentType) { + case twirp_ts_1.TwirpContentType.JSON: + return handleCacheServiceCreateCacheEntryJSON(ctx, service, data, interceptors); + case twirp_ts_1.TwirpContentType.Protobuf: + return handleCacheServiceCreateCacheEntryProtobuf(ctx, service, data, interceptors); + default: + const msg = "unexpected Content-Type"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); + } } -function getCacheVersion(paths, compressionMethod, enableCrossOsArchive = false) { - const components = paths; - // Add compression method to cache version to restore - // compressed cache as per compression method - if (compressionMethod) { - components.push(compressionMethod); +function handleCacheServiceFinalizeCacheEntryUploadRequest(ctx, service, data, interceptors) { + switch (ctx.contentType) { + case twirp_ts_1.TwirpContentType.JSON: + return handleCacheServiceFinalizeCacheEntryUploadJSON(ctx, service, data, interceptors); + case twirp_ts_1.TwirpContentType.Protobuf: + return handleCacheServiceFinalizeCacheEntryUploadProtobuf(ctx, service, data, interceptors); + default: + const msg = "unexpected Content-Type"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); } - // Only check for windows platforms if enableCrossOsArchive is false - if (process.platform === 'win32' && !enableCrossOsArchive) { - components.push('windows-only'); +} +function handleCacheServiceGetCacheEntryDownloadURLRequest(ctx, service, data, interceptors) { + switch (ctx.contentType) { + case twirp_ts_1.TwirpContentType.JSON: + return handleCacheServiceGetCacheEntryDownloadURLJSON(ctx, service, data, interceptors); + case twirp_ts_1.TwirpContentType.Protobuf: + return handleCacheServiceGetCacheEntryDownloadURLProtobuf(ctx, service, data, interceptors); + default: + const msg = "unexpected Content-Type"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); } - // Add salt to cache version to support breaking changes in cache entry - components.push(versionSalt); - return crypto.createHash('sha256').update(components.join('|')).digest('hex'); } -exports.getCacheVersion = getCacheVersion; -function getCacheEntry(keys, paths, options) { +function handleCacheServiceDeleteCacheEntryRequest(ctx, service, data, interceptors) { + switch (ctx.contentType) { + case twirp_ts_1.TwirpContentType.JSON: + return handleCacheServiceDeleteCacheEntryJSON(ctx, service, data, interceptors); + case twirp_ts_1.TwirpContentType.Protobuf: + return handleCacheServiceDeleteCacheEntryProtobuf(ctx, service, data, interceptors); + default: + const msg = "unexpected Content-Type"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); + } +} +function handleCacheServiceListCacheEntriesRequest(ctx, service, data, interceptors) { + switch (ctx.contentType) { + case twirp_ts_1.TwirpContentType.JSON: + return handleCacheServiceListCacheEntriesJSON(ctx, service, data, interceptors); + case twirp_ts_1.TwirpContentType.Protobuf: + return handleCacheServiceListCacheEntriesProtobuf(ctx, service, data, interceptors); + default: + const msg = "unexpected Content-Type"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); + } +} +function handleCacheServiceLookupCacheEntryRequest(ctx, service, data, interceptors) { + switch (ctx.contentType) { + case twirp_ts_1.TwirpContentType.JSON: + return handleCacheServiceLookupCacheEntryJSON(ctx, service, data, interceptors); + case twirp_ts_1.TwirpContentType.Protobuf: + return handleCacheServiceLookupCacheEntryProtobuf(ctx, service, data, interceptors); + default: + const msg = "unexpected Content-Type"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); + } +} +function handleCacheServiceCreateCacheEntryJSON(ctx, service, data, interceptors) { return __awaiter(this, void 0, void 0, function* () { - const httpClient = createHttpClient(); - const version = getCacheVersion(paths, options === null || options === void 0 ? void 0 : options.compressionMethod, options === null || options === void 0 ? void 0 : options.enableCrossOsArchive); - const resource = `cache?keys=${encodeURIComponent(keys.join(','))}&version=${version}`; - const response = yield (0, requestUtils_1.retryTypedResponse)('getCacheEntry', () => __awaiter(this, void 0, void 0, function* () { return httpClient.getJson(getCacheApiUrl(resource)); })); - // Cache not found - if (response.statusCode === 204) { - // List cache for primary key only if cache miss occurs - if (core.isDebug()) { - yield printCachesListForDiagnostics(keys[0], httpClient, version); + let request; + let response; + try { + const body = JSON.parse(data.toString() || "{}"); + request = cache_1.CreateCacheEntryRequest.fromJson(body, { + ignoreUnknownFields: true, + }); + } + catch (e) { + if (e instanceof Error) { + const msg = "the json request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); } - return null; } - if (!(0, requestUtils_1.isSuccessStatusCode)(response.statusCode)) { - throw new Error(`Cache service responded with ${response.statusCode}`); + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.CreateCacheEntry(ctx, inputReq); + }); } - const cacheResult = response.result; - const cacheDownloadUrl = cacheResult === null || cacheResult === void 0 ? void 0 : cacheResult.archiveLocation; - if (!cacheDownloadUrl) { - // Cache achiveLocation not found. This should never happen, and hence bail out. - throw new Error('Cache not found.'); + else { + response = yield service.CreateCacheEntry(ctx, request); } - core.setSecret(cacheDownloadUrl); - core.debug(`Cache Result:`); - core.debug(JSON.stringify(cacheResult)); - return cacheResult; + return JSON.stringify(cache_1.CreateCacheEntryResponse.toJson(response, { + useProtoFieldName: true, + emitDefaultValues: false, + })); }); } -exports.getCacheEntry = getCacheEntry; -function printCachesListForDiagnostics(key, httpClient, version) { +function handleCacheServiceFinalizeCacheEntryUploadJSON(ctx, service, data, interceptors) { return __awaiter(this, void 0, void 0, function* () { - const resource = `caches?key=${encodeURIComponent(key)}`; - const response = yield (0, requestUtils_1.retryTypedResponse)('listCache', () => __awaiter(this, void 0, void 0, function* () { return httpClient.getJson(getCacheApiUrl(resource)); })); - if (response.statusCode === 200) { - const cacheListResult = response.result; - const totalCount = cacheListResult === null || cacheListResult === void 0 ? void 0 : cacheListResult.totalCount; - if (totalCount && totalCount > 0) { - core.debug(`No matching cache found for cache key '${key}', version '${version} and scope ${process.env['GITHUB_REF']}. There exist one or more cache(s) with similar key but they have different version or scope. See more info on cache matching here: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key \nOther caches with similar key:`); - for (const cacheEntry of (cacheListResult === null || cacheListResult === void 0 ? void 0 : cacheListResult.artifactCaches) || []) { - core.debug(`Cache Key: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.cacheKey}, Cache Version: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.cacheVersion}, Cache Scope: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.scope}, Cache Created: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.creationTime}`); - } + let request; + let response; + try { + const body = JSON.parse(data.toString() || "{}"); + request = cache_1.FinalizeCacheEntryUploadRequest.fromJson(body, { + ignoreUnknownFields: true, + }); + } + catch (e) { + if (e instanceof Error) { + const msg = "the json request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); } } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.FinalizeCacheEntryUpload(ctx, inputReq); + }); + } + else { + response = yield service.FinalizeCacheEntryUpload(ctx, request); + } + return JSON.stringify(cache_1.FinalizeCacheEntryUploadResponse.toJson(response, { + useProtoFieldName: true, + emitDefaultValues: false, + })); }); } -function downloadCache(archiveLocation, archivePath, options) { +function handleCacheServiceGetCacheEntryDownloadURLJSON(ctx, service, data, interceptors) { return __awaiter(this, void 0, void 0, function* () { - const archiveUrl = new url_1.URL(archiveLocation); - const downloadOptions = (0, options_1.getDownloadOptions)(options); - if (archiveUrl.hostname.endsWith('.blob.core.windows.net')) { - if (downloadOptions.useAzureSdk) { - // Use Azure storage SDK to download caches hosted on Azure to improve speed and reliability. - yield (0, downloadUtils_1.downloadCacheStorageSDK)(archiveLocation, archivePath, downloadOptions); - } - else if (downloadOptions.concurrentBlobDownloads) { - // Use concurrent implementation with HttpClient to work around blob SDK issue - yield (0, downloadUtils_1.downloadCacheHttpClientConcurrent)(archiveLocation, archivePath, downloadOptions); - } - else { - // Otherwise, download using the Actions http-client. - yield (0, downloadUtils_1.downloadCacheHttpClient)(archiveLocation, archivePath); + let request; + let response; + try { + const body = JSON.parse(data.toString() || "{}"); + request = cache_1.GetCacheEntryDownloadURLRequest.fromJson(body, { + ignoreUnknownFields: true, + }); + } + catch (e) { + if (e instanceof Error) { + const msg = "the json request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); } } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.GetCacheEntryDownloadURL(ctx, inputReq); + }); + } else { - yield (0, downloadUtils_1.downloadCacheHttpClient)(archiveLocation, archivePath); + response = yield service.GetCacheEntryDownloadURL(ctx, request); } + return JSON.stringify(cache_1.GetCacheEntryDownloadURLResponse.toJson(response, { + useProtoFieldName: true, + emitDefaultValues: false, + })); }); } -exports.downloadCache = downloadCache; -// Reserve Cache -function reserveCache(key, paths, options) { +function handleCacheServiceDeleteCacheEntryJSON(ctx, service, data, interceptors) { return __awaiter(this, void 0, void 0, function* () { - const httpClient = createHttpClient(); - const version = getCacheVersion(paths, options === null || options === void 0 ? void 0 : options.compressionMethod, options === null || options === void 0 ? void 0 : options.enableCrossOsArchive); - const reserveCacheRequest = { - key, - version, - cacheSize: options === null || options === void 0 ? void 0 : options.cacheSize - }; - const response = yield (0, requestUtils_1.retryTypedResponse)('reserveCache', () => __awaiter(this, void 0, void 0, function* () { - return httpClient.postJson(getCacheApiUrl('caches'), reserveCacheRequest); + let request; + let response; + try { + const body = JSON.parse(data.toString() || "{}"); + request = cache_1.DeleteCacheEntryRequest.fromJson(body, { + ignoreUnknownFields: true, + }); + } + catch (e) { + if (e instanceof Error) { + const msg = "the json request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.DeleteCacheEntry(ctx, inputReq); + }); + } + else { + response = yield service.DeleteCacheEntry(ctx, request); + } + return JSON.stringify(cache_1.DeleteCacheEntryResponse.toJson(response, { + useProtoFieldName: true, + emitDefaultValues: false, })); - return response; }); } -exports.reserveCache = reserveCache; -function getContentRange(start, end) { - // Format: `bytes start-end/filesize - // start and end are inclusive - // filesize can be * - // For a 200 byte chunk starting at byte 0: - // Content-Range: bytes 0-199/* - return `bytes ${start}-${end}/*`; -} -function uploadChunk(httpClient, resourceUrl, openStream, start, end) { +function handleCacheServiceListCacheEntriesJSON(ctx, service, data, interceptors) { return __awaiter(this, void 0, void 0, function* () { - core.debug(`Uploading chunk of size ${end - start + 1} bytes at offset ${start} with content range: ${getContentRange(start, end)}`); - const additionalHeaders = { + let request; + let response; + try { + const body = JSON.parse(data.toString() || "{}"); + request = cache_1.ListCacheEntriesRequest.fromJson(body, { + ignoreUnknownFields: true, + }); + } + catch (e) { + if (e instanceof Error) { + const msg = "the json request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.ListCacheEntries(ctx, inputReq); + }); + } + else { + response = yield service.ListCacheEntries(ctx, request); + } + return JSON.stringify(cache_1.ListCacheEntriesResponse.toJson(response, { + useProtoFieldName: true, + emitDefaultValues: false, + })); + }); +} +function handleCacheServiceLookupCacheEntryJSON(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + const body = JSON.parse(data.toString() || "{}"); + request = cache_1.LookupCacheEntryRequest.fromJson(body, { + ignoreUnknownFields: true, + }); + } + catch (e) { + if (e instanceof Error) { + const msg = "the json request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.LookupCacheEntry(ctx, inputReq); + }); + } + else { + response = yield service.LookupCacheEntry(ctx, request); + } + return JSON.stringify(cache_1.LookupCacheEntryResponse.toJson(response, { + useProtoFieldName: true, + emitDefaultValues: false, + })); + }); +} +function handleCacheServiceCreateCacheEntryProtobuf(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + request = cache_1.CreateCacheEntryRequest.fromBinary(data); + } + catch (e) { + if (e instanceof Error) { + const msg = "the protobuf request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.CreateCacheEntry(ctx, inputReq); + }); + } + else { + response = yield service.CreateCacheEntry(ctx, request); + } + return Buffer.from(cache_1.CreateCacheEntryResponse.toBinary(response)); + }); +} +function handleCacheServiceFinalizeCacheEntryUploadProtobuf(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + request = cache_1.FinalizeCacheEntryUploadRequest.fromBinary(data); + } + catch (e) { + if (e instanceof Error) { + const msg = "the protobuf request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.FinalizeCacheEntryUpload(ctx, inputReq); + }); + } + else { + response = yield service.FinalizeCacheEntryUpload(ctx, request); + } + return Buffer.from(cache_1.FinalizeCacheEntryUploadResponse.toBinary(response)); + }); +} +function handleCacheServiceGetCacheEntryDownloadURLProtobuf(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + request = cache_1.GetCacheEntryDownloadURLRequest.fromBinary(data); + } + catch (e) { + if (e instanceof Error) { + const msg = "the protobuf request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.GetCacheEntryDownloadURL(ctx, inputReq); + }); + } + else { + response = yield service.GetCacheEntryDownloadURL(ctx, request); + } + return Buffer.from(cache_1.GetCacheEntryDownloadURLResponse.toBinary(response)); + }); +} +function handleCacheServiceDeleteCacheEntryProtobuf(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + request = cache_1.DeleteCacheEntryRequest.fromBinary(data); + } + catch (e) { + if (e instanceof Error) { + const msg = "the protobuf request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.DeleteCacheEntry(ctx, inputReq); + }); + } + else { + response = yield service.DeleteCacheEntry(ctx, request); + } + return Buffer.from(cache_1.DeleteCacheEntryResponse.toBinary(response)); + }); +} +function handleCacheServiceListCacheEntriesProtobuf(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + request = cache_1.ListCacheEntriesRequest.fromBinary(data); + } + catch (e) { + if (e instanceof Error) { + const msg = "the protobuf request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.ListCacheEntries(ctx, inputReq); + }); + } + else { + response = yield service.ListCacheEntries(ctx, request); + } + return Buffer.from(cache_1.ListCacheEntriesResponse.toBinary(response)); + }); +} +function handleCacheServiceLookupCacheEntryProtobuf(ctx, service, data, interceptors) { + return __awaiter(this, void 0, void 0, function* () { + let request; + let response; + try { + request = cache_1.LookupCacheEntryRequest.fromBinary(data); + } + catch (e) { + if (e instanceof Error) { + const msg = "the protobuf request could not be decoded"; + throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); + } + } + if (interceptors && interceptors.length > 0) { + const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); + response = yield interceptor(ctx, request, (ctx, inputReq) => { + return service.LookupCacheEntry(ctx, inputReq); + }); + } + else { + response = yield service.LookupCacheEntry(ctx, request); + } + return Buffer.from(cache_1.LookupCacheEntryResponse.toBinary(response)); + }); +} +//# sourceMappingURL=cache.twirp.js.map + +/***/ }), + +/***/ 3639: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CacheEntry = void 0; +const runtime_1 = __nccwpck_require__(4061); +const runtime_2 = __nccwpck_require__(4061); +const runtime_3 = __nccwpck_require__(4061); +const runtime_4 = __nccwpck_require__(4061); +const runtime_5 = __nccwpck_require__(4061); +const timestamp_1 = __nccwpck_require__(4469); +// @generated message type with reflection information, may provide speed optimized methods +class CacheEntry$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.entities.v1.CacheEntry", [ + { no: 1, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "hash", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "size_bytes", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, + { no: 4, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 5, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 6, name: "created_at", kind: "message", T: () => timestamp_1.Timestamp }, + { no: 7, name: "last_accessed_at", kind: "message", T: () => timestamp_1.Timestamp }, + { no: 8, name: "expires_at", kind: "message", T: () => timestamp_1.Timestamp } + ]); + } + create(value) { + const message = { key: "", hash: "", sizeBytes: "0", scope: "", version: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string key */ 1: + message.key = reader.string(); + break; + case /* string hash */ 2: + message.hash = reader.string(); + break; + case /* int64 size_bytes */ 3: + message.sizeBytes = reader.int64().toString(); + break; + case /* string scope */ 4: + message.scope = reader.string(); + break; + case /* string version */ 5: + message.version = reader.string(); + break; + case /* google.protobuf.Timestamp created_at */ 6: + message.createdAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt); + break; + case /* google.protobuf.Timestamp last_accessed_at */ 7: + message.lastAccessedAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.lastAccessedAt); + break; + case /* google.protobuf.Timestamp expires_at */ 8: + message.expiresAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* string key = 1; */ + if (message.key !== "") + writer.tag(1, runtime_1.WireType.LengthDelimited).string(message.key); + /* string hash = 2; */ + if (message.hash !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.hash); + /* int64 size_bytes = 3; */ + if (message.sizeBytes !== "0") + writer.tag(3, runtime_1.WireType.Varint).int64(message.sizeBytes); + /* string scope = 4; */ + if (message.scope !== "") + writer.tag(4, runtime_1.WireType.LengthDelimited).string(message.scope); + /* string version = 5; */ + if (message.version !== "") + writer.tag(5, runtime_1.WireType.LengthDelimited).string(message.version); + /* google.protobuf.Timestamp created_at = 6; */ + if (message.createdAt) + timestamp_1.Timestamp.internalBinaryWrite(message.createdAt, writer.tag(6, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* google.protobuf.Timestamp last_accessed_at = 7; */ + if (message.lastAccessedAt) + timestamp_1.Timestamp.internalBinaryWrite(message.lastAccessedAt, writer.tag(7, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* google.protobuf.Timestamp expires_at = 8; */ + if (message.expiresAt) + timestamp_1.Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(8, runtime_1.WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.entities.v1.CacheEntry + */ +exports.CacheEntry = new CacheEntry$Type(); +//# sourceMappingURL=cacheentry.js.map + +/***/ }), + +/***/ 7988: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CacheMetadata = void 0; +const runtime_1 = __nccwpck_require__(4061); +const runtime_2 = __nccwpck_require__(4061); +const runtime_3 = __nccwpck_require__(4061); +const runtime_4 = __nccwpck_require__(4061); +const runtime_5 = __nccwpck_require__(4061); +const cachescope_1 = __nccwpck_require__(3749); +// @generated message type with reflection information, may provide speed optimized methods +class CacheMetadata$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.entities.v1.CacheMetadata", [ + { no: 1, name: "repository_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, + { no: 2, name: "scope", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => cachescope_1.CacheScope } + ]); + } + create(value) { + const message = { repositoryId: "0", scope: [] }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* int64 repository_id */ 1: + message.repositoryId = reader.int64().toString(); + break; + case /* repeated github.actions.results.entities.v1.CacheScope scope */ 2: + message.scope.push(cachescope_1.CacheScope.internalBinaryRead(reader, reader.uint32(), options)); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* int64 repository_id = 1; */ + if (message.repositoryId !== "0") + writer.tag(1, runtime_1.WireType.Varint).int64(message.repositoryId); + /* repeated github.actions.results.entities.v1.CacheScope scope = 2; */ + for (let i = 0; i < message.scope.length; i++) + cachescope_1.CacheScope.internalBinaryWrite(message.scope[i], writer.tag(2, runtime_1.WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.entities.v1.CacheMetadata + */ +exports.CacheMetadata = new CacheMetadata$Type(); +//# sourceMappingURL=cachemetadata.js.map + +/***/ }), + +/***/ 3749: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CacheScope = void 0; +const runtime_1 = __nccwpck_require__(4061); +const runtime_2 = __nccwpck_require__(4061); +const runtime_3 = __nccwpck_require__(4061); +const runtime_4 = __nccwpck_require__(4061); +const runtime_5 = __nccwpck_require__(4061); +// @generated message type with reflection information, may provide speed optimized methods +class CacheScope$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.entities.v1.CacheScope", [ + { no: 1, name: "scope", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "permission", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { scope: "", permission: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string scope */ 1: + message.scope = reader.string(); + break; + case /* int64 permission */ 2: + message.permission = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* string scope = 1; */ + if (message.scope !== "") + writer.tag(1, runtime_1.WireType.LengthDelimited).string(message.scope); + /* int64 permission = 2; */ + if (message.permission !== "0") + writer.tag(2, runtime_1.WireType.Varint).int64(message.permission); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.entities.v1.CacheScope + */ +exports.CacheScope = new CacheScope$Type(); +//# sourceMappingURL=cachescope.js.map + +/***/ }), + +/***/ 8245: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.saveCache = exports.reserveCache = exports.downloadCache = exports.getCacheEntry = void 0; +const core = __importStar(__nccwpck_require__(2186)); +const http_client_1 = __nccwpck_require__(6255); +const auth_1 = __nccwpck_require__(5526); +const fs = __importStar(__nccwpck_require__(7147)); +const url_1 = __nccwpck_require__(7310); +const utils = __importStar(__nccwpck_require__(1518)); +const uploadUtils_1 = __nccwpck_require__(1786); +const downloadUtils_1 = __nccwpck_require__(5500); +const options_1 = __nccwpck_require__(6215); +const requestUtils_1 = __nccwpck_require__(3981); +const config_1 = __nccwpck_require__(5147); +const user_agent_1 = __nccwpck_require__(580); +function getCacheApiUrl(resource) { + const baseUrl = (0, config_1.getCacheServiceURL)(); + if (!baseUrl) { + throw new Error('Cache Service Url not found, unable to restore cache.'); + } + const url = `${baseUrl}_apis/artifactcache/${resource}`; + core.debug(`Resource Url: ${url}`); + return url; +} +function createAcceptHeader(type, apiVersion) { + return `${type};api-version=${apiVersion}`; +} +function getRequestOptions() { + const requestOptions = { + headers: { + Accept: createAcceptHeader('application/json', '6.0-preview.1') + } + }; + return requestOptions; +} +function createHttpClient() { + const token = process.env['ACTIONS_RUNTIME_TOKEN'] || ''; + const bearerCredentialHandler = new auth_1.BearerCredentialHandler(token); + return new http_client_1.HttpClient((0, user_agent_1.getUserAgentString)(), [bearerCredentialHandler], getRequestOptions()); +} +function getCacheEntry(keys, paths, options) { + return __awaiter(this, void 0, void 0, function* () { + const httpClient = createHttpClient(); + const version = utils.getCacheVersion(paths, options === null || options === void 0 ? void 0 : options.compressionMethod, options === null || options === void 0 ? void 0 : options.enableCrossOsArchive); + const resource = `cache?keys=${encodeURIComponent(keys.join(','))}&version=${version}`; + const response = yield (0, requestUtils_1.retryTypedResponse)('getCacheEntry', () => __awaiter(this, void 0, void 0, function* () { return httpClient.getJson(getCacheApiUrl(resource)); })); + // Cache not found + if (response.statusCode === 204) { + // List cache for primary key only if cache miss occurs + if (core.isDebug()) { + yield printCachesListForDiagnostics(keys[0], httpClient, version); + } + return null; + } + if (!(0, requestUtils_1.isSuccessStatusCode)(response.statusCode)) { + throw new Error(`Cache service responded with ${response.statusCode}`); + } + const cacheResult = response.result; + const cacheDownloadUrl = cacheResult === null || cacheResult === void 0 ? void 0 : cacheResult.archiveLocation; + if (!cacheDownloadUrl) { + // Cache achiveLocation not found. This should never happen, and hence bail out. + throw new Error('Cache not found.'); + } + core.setSecret(cacheDownloadUrl); + core.debug(`Cache Result:`); + core.debug(JSON.stringify(cacheResult)); + return cacheResult; + }); +} +exports.getCacheEntry = getCacheEntry; +function printCachesListForDiagnostics(key, httpClient, version) { + return __awaiter(this, void 0, void 0, function* () { + const resource = `caches?key=${encodeURIComponent(key)}`; + const response = yield (0, requestUtils_1.retryTypedResponse)('listCache', () => __awaiter(this, void 0, void 0, function* () { return httpClient.getJson(getCacheApiUrl(resource)); })); + if (response.statusCode === 200) { + const cacheListResult = response.result; + const totalCount = cacheListResult === null || cacheListResult === void 0 ? void 0 : cacheListResult.totalCount; + if (totalCount && totalCount > 0) { + core.debug(`No matching cache found for cache key '${key}', version '${version} and scope ${process.env['GITHUB_REF']}. There exist one or more cache(s) with similar key but they have different version or scope. See more info on cache matching here: https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key \nOther caches with similar key:`); + for (const cacheEntry of (cacheListResult === null || cacheListResult === void 0 ? void 0 : cacheListResult.artifactCaches) || []) { + core.debug(`Cache Key: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.cacheKey}, Cache Version: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.cacheVersion}, Cache Scope: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.scope}, Cache Created: ${cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.creationTime}`); + } + } + } + }); +} +function downloadCache(archiveLocation, archivePath, options) { + return __awaiter(this, void 0, void 0, function* () { + const archiveUrl = new url_1.URL(archiveLocation); + const downloadOptions = (0, options_1.getDownloadOptions)(options); + if (archiveUrl.hostname.endsWith('.blob.core.windows.net')) { + if (downloadOptions.useAzureSdk) { + // Use Azure storage SDK to download caches hosted on Azure to improve speed and reliability. + yield (0, downloadUtils_1.downloadCacheStorageSDK)(archiveLocation, archivePath, downloadOptions); + } + else if (downloadOptions.concurrentBlobDownloads) { + // Use concurrent implementation with HttpClient to work around blob SDK issue + yield (0, downloadUtils_1.downloadCacheHttpClientConcurrent)(archiveLocation, archivePath, downloadOptions); + } + else { + // Otherwise, download using the Actions http-client. + yield (0, downloadUtils_1.downloadCacheHttpClient)(archiveLocation, archivePath); + } + } + else { + yield (0, downloadUtils_1.downloadCacheHttpClient)(archiveLocation, archivePath); + } + }); +} +exports.downloadCache = downloadCache; +// Reserve Cache +function reserveCache(key, paths, options) { + return __awaiter(this, void 0, void 0, function* () { + const httpClient = createHttpClient(); + const version = utils.getCacheVersion(paths, options === null || options === void 0 ? void 0 : options.compressionMethod, options === null || options === void 0 ? void 0 : options.enableCrossOsArchive); + const reserveCacheRequest = { + key, + version, + cacheSize: options === null || options === void 0 ? void 0 : options.cacheSize + }; + const response = yield (0, requestUtils_1.retryTypedResponse)('reserveCache', () => __awaiter(this, void 0, void 0, function* () { + return httpClient.postJson(getCacheApiUrl('caches'), reserveCacheRequest); + })); + return response; + }); +} +exports.reserveCache = reserveCache; +function getContentRange(start, end) { + // Format: `bytes start-end/filesize + // start and end are inclusive + // filesize can be * + // For a 200 byte chunk starting at byte 0: + // Content-Range: bytes 0-199/* + return `bytes ${start}-${end}/*`; +} +function uploadChunk(httpClient, resourceUrl, openStream, start, end) { + return __awaiter(this, void 0, void 0, function* () { + core.debug(`Uploading chunk of size ${end - start + 1} bytes at offset ${start} with content range: ${getContentRange(start, end)}`); + const additionalHeaders = { 'Content-Type': 'application/octet-stream', 'Content-Range': getContentRange(start, end) }; @@ -1134,20 +3084,30 @@ function commitCache(httpClient, cacheId, filesize) { })); }); } -function saveCache(cacheId, archivePath, options) { +function saveCache(cacheId, archivePath, signedUploadURL, options) { return __awaiter(this, void 0, void 0, function* () { - const httpClient = createHttpClient(); - core.debug('Upload cache'); - yield uploadFile(httpClient, cacheId, archivePath, options); - // Commit Cache - core.debug('Commiting cache'); - const cacheSize = utils.getArchiveFileSizeInBytes(archivePath); - core.info(`Cache Size: ~${Math.round(cacheSize / (1024 * 1024))} MB (${cacheSize} B)`); - const commitCacheResponse = yield commitCache(httpClient, cacheId, cacheSize); - if (!(0, requestUtils_1.isSuccessStatusCode)(commitCacheResponse.statusCode)) { - throw new Error(`Cache service responded with ${commitCacheResponse.statusCode} during commit cache.`); - } - core.info('Cache saved successfully'); + const uploadOptions = (0, options_1.getUploadOptions)(options); + if (uploadOptions.useAzureSdk) { + // Use Azure storage SDK to upload caches directly to Azure + if (!signedUploadURL) { + throw new Error('Azure Storage SDK can only be used when a signed URL is provided.'); + } + yield (0, uploadUtils_1.uploadCacheArchiveSDK)(signedUploadURL, archivePath, options); + } + else { + const httpClient = createHttpClient(); + core.debug('Upload cache'); + yield uploadFile(httpClient, cacheId, archivePath, options); + // Commit Cache + core.debug('Commiting cache'); + const cacheSize = utils.getArchiveFileSizeInBytes(archivePath); + core.info(`Cache Size: ~${Math.round(cacheSize / (1024 * 1024))} MB (${cacheSize} B)`); + const commitCacheResponse = yield commitCache(httpClient, cacheId, cacheSize); + if (!(0, requestUtils_1.isSuccessStatusCode)(commitCacheResponse.statusCode)) { + throw new Error(`Cache service responded with ${commitCacheResponse.statusCode} during commit cache.`); + } + core.info('Cache saved successfully'); + } }); } exports.saveCache = saveCache; @@ -1200,17 +3160,18 @@ var __asyncValues = (this && this.__asyncValues) || function (o) { function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isGhes = exports.assertDefined = exports.getGnuTarPathOnWindows = exports.getCacheFileName = exports.getCompressionMethod = exports.unlinkFile = exports.resolvePaths = exports.getArchiveFileSizeInBytes = exports.createTempDirectory = void 0; +exports.getRuntimeToken = exports.getCacheVersion = exports.assertDefined = exports.getGnuTarPathOnWindows = exports.getCacheFileName = exports.getCompressionMethod = exports.unlinkFile = exports.resolvePaths = exports.getArchiveFileSizeInBytes = exports.createTempDirectory = void 0; const core = __importStar(__nccwpck_require__(2186)); const exec = __importStar(__nccwpck_require__(1514)); const glob = __importStar(__nccwpck_require__(8090)); const io = __importStar(__nccwpck_require__(7436)); +const crypto = __importStar(__nccwpck_require__(6113)); const fs = __importStar(__nccwpck_require__(7147)); const path = __importStar(__nccwpck_require__(1017)); const semver = __importStar(__nccwpck_require__(3771)); const util = __importStar(__nccwpck_require__(3837)); -const uuid_1 = __nccwpck_require__(4138); const constants_1 = __nccwpck_require__(8840); +const versionSalt = '1.0'; // From https://github.com/actions/toolkit/blob/main/packages/tool-cache/src/tool-cache.ts#L23 function createTempDirectory() { return __awaiter(this, void 0, void 0, function* () { @@ -1232,7 +3193,7 @@ function createTempDirectory() { } tempDirectory = path.join(baseLocation, 'actions', 'temp'); } - const dest = path.join(tempDirectory, (0, uuid_1.v4)()); + const dest = path.join(tempDirectory, crypto.randomUUID()); yield io.mkdirP(dest); return dest; }); @@ -1252,26 +3213,21 @@ function resolvePaths(patterns) { implicitDescendants: false }); try { - for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a;) { + for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a; _e = true) { _c = _g.value; _e = false; - try { - const file = _c; - const relativeFile = path - .relative(workspace, file) - .replace(new RegExp(`\\${path.sep}`, 'g'), '/'); - core.debug(`Matched: ${relativeFile}`); - // Paths are made relative so the tar entries are all relative to the root of the workspace. - if (relativeFile === '') { - // path.relative returns empty string if workspace and file are equal - paths.push('.'); - } - else { - paths.push(`${relativeFile}`); - } + const file = _c; + const relativeFile = path + .relative(workspace, file) + .replace(new RegExp(`\\${path.sep}`, 'g'), '/'); + core.debug(`Matched: ${relativeFile}`); + // Paths are made relative so the tar entries are all relative to the root of the workspace. + if (relativeFile === '') { + // path.relative returns empty string if workspace and file are equal + paths.push('.'); } - finally { - _e = true; + else { + paths.push(`${relativeFile}`); } } } @@ -1353,12 +3309,76 @@ function assertDefined(name, value) { return value; } exports.assertDefined = assertDefined; +function getCacheVersion(paths, compressionMethod, enableCrossOsArchive = false) { + // don't pass changes upstream + const components = paths.slice(); + // Add compression method to cache version to restore + // compressed cache as per compression method + if (compressionMethod) { + components.push(compressionMethod); + } + // Only check for windows platforms if enableCrossOsArchive is false + if (process.platform === 'win32' && !enableCrossOsArchive) { + components.push('windows-only'); + } + // Add salt to cache version to support breaking changes in cache entry + components.push(versionSalt); + return crypto.createHash('sha256').update(components.join('|')).digest('hex'); +} +exports.getCacheVersion = getCacheVersion; +function getRuntimeToken() { + const token = process.env['ACTIONS_RUNTIME_TOKEN']; + if (!token) { + throw new Error('Unable to get the ACTIONS_RUNTIME_TOKEN env variable'); + } + return token; +} +exports.getRuntimeToken = getRuntimeToken; +//# sourceMappingURL=cacheUtils.js.map + +/***/ }), + +/***/ 5147: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getCacheServiceURL = exports.getCacheServiceVersion = exports.isGhes = void 0; function isGhes() { const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com'); - return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; + const hostname = ghUrl.hostname.trimEnd().toUpperCase(); + const isGitHubHost = hostname === 'GITHUB.COM'; + const isGheHost = hostname.endsWith('.GHE.COM'); + const isLocalHost = hostname.endsWith('.LOCALHOST'); + return !isGitHubHost && !isGheHost && !isLocalHost; } exports.isGhes = isGhes; -//# sourceMappingURL=cacheUtils.js.map +function getCacheServiceVersion() { + // Cache service v2 is not supported on GHES. We will default to + // cache service v1 even if the feature flag was enabled by user. + if (isGhes()) + return 'v1'; + return process.env['ACTIONS_CACHE_SERVICE_V2'] ? 'v2' : 'v1'; +} +exports.getCacheServiceVersion = getCacheServiceVersion; +function getCacheServiceURL() { + const version = getCacheServiceVersion(); + // Based on the version of the cache service, we will determine which + // URL to use. + switch (version) { + case 'v1': + return (process.env['ACTIONS_CACHE_URL'] || + process.env['ACTIONS_RESULTS_URL'] || + ''); + case 'v2': + return process.env['ACTIONS_RESULTS_URL'] || ''; + default: + throw new Error(`Unsupported cache service version: ${version}`); + } +} +exports.getCacheServiceURL = getCacheServiceURL; +//# sourceMappingURL=config.js.map /***/ }), @@ -1368,12 +3388,12 @@ exports.isGhes = isGhes; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ManifestFilename = exports.TarFilename = exports.SystemTarPathOnWindows = exports.GnuTarPathOnWindows = exports.SocketTimeout = exports.DefaultRetryDelay = exports.DefaultRetryAttempts = exports.ArchiveToolType = exports.CompressionMethod = exports.CacheFilename = void 0; +exports.CacheFileSizeLimit = exports.ManifestFilename = exports.TarFilename = exports.SystemTarPathOnWindows = exports.GnuTarPathOnWindows = exports.SocketTimeout = exports.DefaultRetryDelay = exports.DefaultRetryAttempts = exports.ArchiveToolType = exports.CompressionMethod = exports.CacheFilename = void 0; var CacheFilename; (function (CacheFilename) { CacheFilename["Gzip"] = "cache.tgz"; CacheFilename["Zstd"] = "cache.tzst"; -})(CacheFilename = exports.CacheFilename || (exports.CacheFilename = {})); +})(CacheFilename || (exports.CacheFilename = CacheFilename = {})); var CompressionMethod; (function (CompressionMethod) { CompressionMethod["Gzip"] = "gzip"; @@ -1381,12 +3401,12 @@ var CompressionMethod; // This enum is for earlier version of zstd that does not have --long support CompressionMethod["ZstdWithoutLong"] = "zstd-without-long"; CompressionMethod["Zstd"] = "zstd"; -})(CompressionMethod = exports.CompressionMethod || (exports.CompressionMethod = {})); +})(CompressionMethod || (exports.CompressionMethod = CompressionMethod = {})); var ArchiveToolType; (function (ArchiveToolType) { ArchiveToolType["GNU"] = "gnu"; ArchiveToolType["BSD"] = "bsd"; -})(ArchiveToolType = exports.ArchiveToolType || (exports.ArchiveToolType = {})); +})(ArchiveToolType || (exports.ArchiveToolType = ArchiveToolType = {})); // The default number of retry attempts. exports.DefaultRetryAttempts = 2; // The default delay in milliseconds between retry attempts. @@ -1401,6 +3421,7 @@ exports.GnuTarPathOnWindows = `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\ta exports.SystemTarPathOnWindows = `${process.env['SYSTEMDRIVE']}\\Windows\\System32\\tar.exe`; exports.TarFilename = 'cache.tar'; exports.ManifestFilename = 'manifest.txt'; +exports.CacheFileSizeLimit = 10 * Math.pow(1024, 3); // 10GiB per repository //# sourceMappingURL=constants.js.map /***/ }), @@ -1934,6 +3955,270 @@ exports.retryHttpClientResponse = retryHttpClientResponse; /***/ }), +/***/ 2502: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.internalCacheTwirpClient = void 0; +const core_1 = __nccwpck_require__(2186); +const user_agent_1 = __nccwpck_require__(580); +const errors_1 = __nccwpck_require__(8223); +const config_1 = __nccwpck_require__(5147); +const cacheUtils_1 = __nccwpck_require__(1518); +const auth_1 = __nccwpck_require__(5526); +const http_client_1 = __nccwpck_require__(6255); +const cache_twirp_1 = __nccwpck_require__(267); +/** + * This class is a wrapper around the CacheServiceClientJSON class generated by Twirp. + * + * It adds retry logic to the request method, which is not present in the generated client. + * + * This class is used to interact with cache service v2. + */ +class CacheServiceClient { + constructor(userAgent, maxAttempts, baseRetryIntervalMilliseconds, retryMultiplier) { + this.maxAttempts = 5; + this.baseRetryIntervalMilliseconds = 3000; + this.retryMultiplier = 1.5; + const token = (0, cacheUtils_1.getRuntimeToken)(); + this.baseUrl = (0, config_1.getCacheServiceURL)(); + if (maxAttempts) { + this.maxAttempts = maxAttempts; + } + if (baseRetryIntervalMilliseconds) { + this.baseRetryIntervalMilliseconds = baseRetryIntervalMilliseconds; + } + if (retryMultiplier) { + this.retryMultiplier = retryMultiplier; + } + this.httpClient = new http_client_1.HttpClient(userAgent, [ + new auth_1.BearerCredentialHandler(token) + ]); + } + // This function satisfies the Rpc interface. It is compatible with the JSON + // JSON generated client. + request(service, method, contentType, data) { + return __awaiter(this, void 0, void 0, function* () { + const url = new URL(`/twirp/${service}/${method}`, this.baseUrl).href; + (0, core_1.debug)(`[Request] ${method} ${url}`); + const headers = { + 'Content-Type': contentType + }; + try { + const { body } = yield this.retryableRequest(() => __awaiter(this, void 0, void 0, function* () { return this.httpClient.post(url, JSON.stringify(data), headers); })); + return body; + } + catch (error) { + throw new Error(`Failed to ${method}: ${error.message}`); + } + }); + } + retryableRequest(operation) { + return __awaiter(this, void 0, void 0, function* () { + let attempt = 0; + let errorMessage = ''; + let rawBody = ''; + while (attempt < this.maxAttempts) { + let isRetryable = false; + try { + const response = yield operation(); + const statusCode = response.message.statusCode; + rawBody = yield response.readBody(); + (0, core_1.debug)(`[Response] - ${response.message.statusCode}`); + (0, core_1.debug)(`Headers: ${JSON.stringify(response.message.headers, null, 2)}`); + const body = JSON.parse(rawBody); + (0, core_1.debug)(`Body: ${JSON.stringify(body, null, 2)}`); + if (this.isSuccessStatusCode(statusCode)) { + return { response, body }; + } + isRetryable = this.isRetryableHttpStatusCode(statusCode); + errorMessage = `Failed request: (${statusCode}) ${response.message.statusMessage}`; + if (body.msg) { + if (errors_1.UsageError.isUsageErrorMessage(body.msg)) { + throw new errors_1.UsageError(); + } + errorMessage = `${errorMessage}: ${body.msg}`; + } + } + catch (error) { + if (error instanceof SyntaxError) { + (0, core_1.debug)(`Raw Body: ${rawBody}`); + } + if (error instanceof errors_1.UsageError) { + throw error; + } + if (errors_1.NetworkError.isNetworkErrorCode(error === null || error === void 0 ? void 0 : error.code)) { + throw new errors_1.NetworkError(error === null || error === void 0 ? void 0 : error.code); + } + isRetryable = true; + errorMessage = error.message; + } + if (!isRetryable) { + throw new Error(`Received non-retryable error: ${errorMessage}`); + } + if (attempt + 1 === this.maxAttempts) { + throw new Error(`Failed to make request after ${this.maxAttempts} attempts: ${errorMessage}`); + } + const retryTimeMilliseconds = this.getExponentialRetryTimeMilliseconds(attempt); + (0, core_1.info)(`Attempt ${attempt + 1} of ${this.maxAttempts} failed with error: ${errorMessage}. Retrying request in ${retryTimeMilliseconds} ms...`); + yield this.sleep(retryTimeMilliseconds); + attempt++; + } + throw new Error(`Request failed`); + }); + } + isSuccessStatusCode(statusCode) { + if (!statusCode) + return false; + return statusCode >= 200 && statusCode < 300; + } + isRetryableHttpStatusCode(statusCode) { + if (!statusCode) + return false; + const retryableStatusCodes = [ + http_client_1.HttpCodes.BadGateway, + http_client_1.HttpCodes.GatewayTimeout, + http_client_1.HttpCodes.InternalServerError, + http_client_1.HttpCodes.ServiceUnavailable, + http_client_1.HttpCodes.TooManyRequests + ]; + return retryableStatusCodes.includes(statusCode); + } + sleep(milliseconds) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => setTimeout(resolve, milliseconds)); + }); + } + getExponentialRetryTimeMilliseconds(attempt) { + if (attempt < 0) { + throw new Error('attempt should be a positive integer'); + } + if (attempt === 0) { + return this.baseRetryIntervalMilliseconds; + } + const minTime = this.baseRetryIntervalMilliseconds * Math.pow(this.retryMultiplier, attempt); + const maxTime = minTime * this.retryMultiplier; + // returns a random number between minTime and maxTime (exclusive) + return Math.trunc(Math.random() * (maxTime - minTime) + minTime); + } +} +function internalCacheTwirpClient(options) { + const client = new CacheServiceClient((0, user_agent_1.getUserAgentString)(), options === null || options === void 0 ? void 0 : options.maxAttempts, options === null || options === void 0 ? void 0 : options.retryIntervalMs, options === null || options === void 0 ? void 0 : options.retryMultiplier); + return new cache_twirp_1.CacheServiceClientJSON(client); +} +exports.internalCacheTwirpClient = internalCacheTwirpClient; +//# sourceMappingURL=cacheTwirpClient.js.map + +/***/ }), + +/***/ 8223: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UsageError = exports.NetworkError = exports.GHESNotSupportedError = exports.CacheNotFoundError = exports.InvalidResponseError = exports.FilesNotFoundError = void 0; +class FilesNotFoundError extends Error { + constructor(files = []) { + let message = 'No files were found to upload'; + if (files.length > 0) { + message += `: ${files.join(', ')}`; + } + super(message); + this.files = files; + this.name = 'FilesNotFoundError'; + } +} +exports.FilesNotFoundError = FilesNotFoundError; +class InvalidResponseError extends Error { + constructor(message) { + super(message); + this.name = 'InvalidResponseError'; + } +} +exports.InvalidResponseError = InvalidResponseError; +class CacheNotFoundError extends Error { + constructor(message = 'Cache not found') { + super(message); + this.name = 'CacheNotFoundError'; + } +} +exports.CacheNotFoundError = CacheNotFoundError; +class GHESNotSupportedError extends Error { + constructor(message = '@actions/cache v4.1.4+, actions/cache/save@v4+ and actions/cache/restore@v4+ are not currently supported on GHES.') { + super(message); + this.name = 'GHESNotSupportedError'; + } +} +exports.GHESNotSupportedError = GHESNotSupportedError; +class NetworkError extends Error { + constructor(code) { + const message = `Unable to make request: ${code}\nIf you are using self-hosted runners, please make sure your runner has access to all GitHub endpoints: https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github`; + super(message); + this.code = code; + this.name = 'NetworkError'; + } +} +exports.NetworkError = NetworkError; +NetworkError.isNetworkErrorCode = (code) => { + if (!code) + return false; + return [ + 'ECONNRESET', + 'ENOTFOUND', + 'ETIMEDOUT', + 'ECONNREFUSED', + 'EHOSTUNREACH' + ].includes(code); +}; +class UsageError extends Error { + constructor() { + const message = `Cache storage quota has been hit. Unable to upload any new cache entries. Usage is recalculated every 6-12 hours.\nMore info on storage limits: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#calculating-minute-and-storage-spending`; + super(message); + this.name = 'UsageError'; + } +} +exports.UsageError = UsageError; +UsageError.isUsageErrorMessage = (msg) => { + if (!msg) + return false; + return msg.includes('insufficient usage'); +}; +//# sourceMappingURL=errors.js.map + +/***/ }), + +/***/ 580: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getUserAgentString = void 0; +// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports +const packageJson = __nccwpck_require__(9167); +/** + * Ensure that this User Agent String is used in all HTTP calls so that we can monitor telemetry between different versions of this package + */ +function getUserAgentString() { + return `@actions/cache-${packageJson.version}`; +} +exports.getUserAgentString = getUserAgentString; +//# sourceMappingURL=user-agent.js.map + +/***/ }), + /***/ 6490: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { @@ -2213,6 +4498,180 @@ exports.createTar = createTar; /***/ }), +/***/ 1786: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.uploadCacheArchiveSDK = exports.UploadProgress = void 0; +const core = __importStar(__nccwpck_require__(2186)); +const storage_blob_1 = __nccwpck_require__(4100); +const errors_1 = __nccwpck_require__(8223); +/** + * Class for tracking the upload state and displaying stats. + */ +class UploadProgress { + constructor(contentLength) { + this.contentLength = contentLength; + this.sentBytes = 0; + this.displayedComplete = false; + this.startTime = Date.now(); + } + /** + * Sets the number of bytes sent + * + * @param sentBytes the number of bytes sent + */ + setSentBytes(sentBytes) { + this.sentBytes = sentBytes; + } + /** + * Returns the total number of bytes transferred. + */ + getTransferredBytes() { + return this.sentBytes; + } + /** + * Returns true if the upload is complete. + */ + isDone() { + return this.getTransferredBytes() === this.contentLength; + } + /** + * Prints the current upload stats. Once the upload completes, this will print one + * last line and then stop. + */ + display() { + if (this.displayedComplete) { + return; + } + const transferredBytes = this.sentBytes; + const percentage = (100 * (transferredBytes / this.contentLength)).toFixed(1); + const elapsedTime = Date.now() - this.startTime; + const uploadSpeed = (transferredBytes / + (1024 * 1024) / + (elapsedTime / 1000)).toFixed(1); + core.info(`Sent ${transferredBytes} of ${this.contentLength} (${percentage}%), ${uploadSpeed} MBs/sec`); + if (this.isDone()) { + this.displayedComplete = true; + } + } + /** + * Returns a function used to handle TransferProgressEvents. + */ + onProgress() { + return (progress) => { + this.setSentBytes(progress.loadedBytes); + }; + } + /** + * Starts the timer that displays the stats. + * + * @param delayInMs the delay between each write + */ + startDisplayTimer(delayInMs = 1000) { + const displayCallback = () => { + this.display(); + if (!this.isDone()) { + this.timeoutHandle = setTimeout(displayCallback, delayInMs); + } + }; + this.timeoutHandle = setTimeout(displayCallback, delayInMs); + } + /** + * Stops the timer that displays the stats. As this typically indicates the upload + * is complete, this will display one last line, unless the last line has already + * been written. + */ + stopDisplayTimer() { + if (this.timeoutHandle) { + clearTimeout(this.timeoutHandle); + this.timeoutHandle = undefined; + } + this.display(); + } +} +exports.UploadProgress = UploadProgress; +/** + * Uploads a cache archive directly to Azure Blob Storage using the Azure SDK. + * This function will display progress information to the console. Concurrency of the + * upload is determined by the calling functions. + * + * @param signedUploadURL + * @param archivePath + * @param options + * @returns + */ +function uploadCacheArchiveSDK(signedUploadURL, archivePath, options) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const blobClient = new storage_blob_1.BlobClient(signedUploadURL); + const blockBlobClient = blobClient.getBlockBlobClient(); + const uploadProgress = new UploadProgress((_a = options === null || options === void 0 ? void 0 : options.archiveSizeBytes) !== null && _a !== void 0 ? _a : 0); + // Specify data transfer options + const uploadOptions = { + blockSize: options === null || options === void 0 ? void 0 : options.uploadChunkSize, + concurrency: options === null || options === void 0 ? void 0 : options.uploadConcurrency, + maxSingleShotSize: 128 * 1024 * 1024, + onProgress: uploadProgress.onProgress() + }; + try { + uploadProgress.startDisplayTimer(); + core.debug(`BlobClient: ${blobClient.name}:${blobClient.accountName}:${blobClient.containerName}`); + const response = yield blockBlobClient.uploadFile(archivePath, uploadOptions); + // TODO: better management of non-retryable errors + if (response._response.status >= 400) { + throw new errors_1.InvalidResponseError(`uploadCacheArchiveSDK: upload failed with status code ${response._response.status}`); + } + return response; + } + catch (error) { + core.warning(`uploadCacheArchiveSDK: internal error uploading cache archive: ${error.message}`); + throw error; + } + finally { + uploadProgress.stopDisplayTimer(); + } + }); +} +exports.uploadCacheArchiveSDK = uploadCacheArchiveSDK; +//# sourceMappingURL=uploadUtils.js.map + +/***/ }), + /***/ 6215: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { @@ -2250,11 +4709,16 @@ const core = __importStar(__nccwpck_require__(2186)); * @param copy the original upload options */ function getUploadOptions(copy) { + // Defaults if not overriden const result = { + useAzureSdk: false, uploadConcurrency: 4, uploadChunkSize: 32 * 1024 * 1024 }; if (copy) { + if (typeof copy.useAzureSdk === 'boolean') { + result.useAzureSdk = copy.useAzureSdk; + } if (typeof copy.uploadConcurrency === 'number') { result.uploadConcurrency = copy.uploadConcurrency; } @@ -2262,6 +4726,18 @@ function getUploadOptions(copy) { result.uploadChunkSize = copy.uploadChunkSize; } } + /** + * Add env var overrides + */ + // Cap the uploadConcurrency at 32 + result.uploadConcurrency = !isNaN(Number(process.env['CACHE_UPLOAD_CONCURRENCY'])) + ? Math.min(32, Number(process.env['CACHE_UPLOAD_CONCURRENCY'])) + : result.uploadConcurrency; + // Cap the uploadChunkSize at 128MiB + result.uploadChunkSize = !isNaN(Number(process.env['CACHE_UPLOAD_CHUNK_SIZE'])) + ? Math.min(128 * 1024 * 1024, Number(process.env['CACHE_UPLOAD_CHUNK_SIZE']) * 1024 * 1024) + : result.uploadChunkSize; + core.debug(`Use Azure SDK: ${result.useAzureSdk}`); core.debug(`Upload concurrency: ${result.uploadConcurrency}`); core.debug(`Upload chunk size: ${result.uploadChunkSize}`); return result; @@ -3968,221 +6444,6 @@ function coerce (version, options) { } -/***/ }), - -/***/ 4138: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var v1 = __nccwpck_require__(1610); -var v4 = __nccwpck_require__(8373); - -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; - -module.exports = uuid; - - -/***/ }), - -/***/ 5694: -/***/ ((module) => { - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -var byteToHex = []; -for (var i = 0; i < 256; ++i) { - byteToHex[i] = (i + 0x100).toString(16).substr(1); -} - -function bytesToUuid(buf, offset) { - var i = offset || 0; - var bth = byteToHex; - // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 - return ([ - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]] - ]).join(''); -} - -module.exports = bytesToUuid; - - -/***/ }), - -/***/ 4069: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// Unique ID creation requires a high quality random # generator. In node.js -// this is pretty straight-forward - we use the crypto API. - -var crypto = __nccwpck_require__(6113); - -module.exports = function nodeRNG() { - return crypto.randomBytes(16); -}; - - -/***/ }), - -/***/ 1610: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var rng = __nccwpck_require__(4069); -var bytesToUuid = __nccwpck_require__(5694); - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -var _nodeId; -var _clockseq; - -// Previous uuid creation time -var _lastMSecs = 0; -var _lastNSecs = 0; - -// See https://github.com/uuidjs/uuid for API details -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - var node = options.node || _nodeId; - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; - - // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - if (node == null || clockseq == null) { - var seedBytes = rng(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [ - seedBytes[0] | 0x01, - seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] - ]; - } - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - for (var n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf ? buf : bytesToUuid(b); -} - -module.exports = v1; - - -/***/ }), - -/***/ 8373: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var rng = __nccwpck_require__(4069); -var bytesToUuid = __nccwpck_require__(5694); - -function v4(options, buf, offset) { - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options === 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ++ii) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || bytesToUuid(rnds); -} - -module.exports = v4; - - /***/ }), /***/ 7351: @@ -4192,7 +6453,11 @@ module.exports = v4; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4205,7 +6470,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -4267,13 +6532,13 @@ class Command { } } function escapeData(s) { - return utils_1.toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A'); } function escapeProperty(s) { - return utils_1.toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A') @@ -4291,7 +6556,11 @@ function escapeProperty(s) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4304,7 +6573,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -4318,7 +6587,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; const command_1 = __nccwpck_require__(7351); const file_command_1 = __nccwpck_require__(717); const utils_1 = __nccwpck_require__(5278); @@ -4338,7 +6607,7 @@ var ExitCode; * A code indicating that the action was a failure */ ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +})(ExitCode || (exports.ExitCode = ExitCode = {})); //----------------------------------------------------------------------- // Variables //----------------------------------------------------------------------- @@ -4349,13 +6618,13 @@ var ExitCode; */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); + const convertedVal = (0, utils_1.toCommandValue)(val); process.env[name] = convertedVal; const filePath = process.env['GITHUB_ENV'] || ''; if (filePath) { - return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val)); } - command_1.issueCommand('set-env', { name }, convertedVal); + (0, command_1.issueCommand)('set-env', { name }, convertedVal); } exports.exportVariable = exportVariable; /** @@ -4363,7 +6632,7 @@ exports.exportVariable = exportVariable; * @param secret value of the secret */ function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); + (0, command_1.issueCommand)('add-mask', {}, secret); } exports.setSecret = setSecret; /** @@ -4373,10 +6642,10 @@ exports.setSecret = setSecret; function addPath(inputPath) { const filePath = process.env['GITHUB_PATH'] || ''; if (filePath) { - file_command_1.issueFileCommand('PATH', inputPath); + (0, file_command_1.issueFileCommand)('PATH', inputPath); } else { - command_1.issueCommand('add-path', {}, inputPath); + (0, command_1.issueCommand)('add-path', {}, inputPath); } process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; } @@ -4451,10 +6720,10 @@ exports.getBooleanInput = getBooleanInput; function setOutput(name, value) { const filePath = process.env['GITHUB_OUTPUT'] || ''; if (filePath) { - return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value)); } process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); + (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value)); } exports.setOutput = setOutput; /** @@ -4463,7 +6732,7 @@ exports.setOutput = setOutput; * */ function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); + (0, command_1.issue)('echo', enabled ? 'on' : 'off'); } exports.setCommandEcho = setCommandEcho; //----------------------------------------------------------------------- @@ -4494,7 +6763,7 @@ exports.isDebug = isDebug; * @param message debug message */ function debug(message) { - command_1.issueCommand('debug', {}, message); + (0, command_1.issueCommand)('debug', {}, message); } exports.debug = debug; /** @@ -4503,7 +6772,7 @@ exports.debug = debug; * @param properties optional properties to add to the annotation. */ function error(message, properties = {}) { - command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports.error = error; /** @@ -4512,7 +6781,7 @@ exports.error = error; * @param properties optional properties to add to the annotation. */ function warning(message, properties = {}) { - command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports.warning = warning; /** @@ -4521,7 +6790,7 @@ exports.warning = warning; * @param properties optional properties to add to the annotation. */ function notice(message, properties = {}) { - command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports.notice = notice; /** @@ -4540,14 +6809,14 @@ exports.info = info; * @param name The name of the output group */ function startGroup(name) { - command_1.issue('group', name); + (0, command_1.issue)('group', name); } exports.startGroup = startGroup; /** * End an output group. */ function endGroup() { - command_1.issue('endgroup'); + (0, command_1.issue)('endgroup'); } exports.endGroup = endGroup; /** @@ -4585,9 +6854,9 @@ exports.group = group; function saveState(name, value) { const filePath = process.env['GITHUB_STATE'] || ''; if (filePath) { - return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value)); } - command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); + (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value)); } exports.saveState = saveState; /** @@ -4623,6 +6892,10 @@ var path_utils_1 = __nccwpck_require__(2981); Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); +/** + * Platform utilities exports + */ +exports.platform = __importStar(__nccwpck_require__(5243)); //# sourceMappingURL=core.js.map /***/ }), @@ -4635,7 +6908,11 @@ Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: funct // For internal use, subject to change. var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4648,7 +6925,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -4656,9 +6933,9 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ +const crypto = __importStar(__nccwpck_require__(6113)); const fs = __importStar(__nccwpck_require__(7147)); const os = __importStar(__nccwpck_require__(2037)); -const uuid_1 = __nccwpck_require__(8974); const utils_1 = __nccwpck_require__(5278); function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; @@ -4668,14 +6945,14 @@ function issueFileCommand(command, message) { if (!fs.existsSync(filePath)) { throw new Error(`Missing file at path: ${filePath}`); } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, { encoding: 'utf8' }); } exports.issueFileCommand = issueFileCommand; function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = (0, utils_1.toCommandValue)(value); // These should realistically never happen, but just in case someone finds a // way to exploit uuid generation let's not allow keys or values that contain // the delimiter. @@ -4760,9 +7037,9 @@ class OidcClient { const encodedAudience = encodeURIComponent(audience); id_token_url = `${id_token_url}&audience=${encodedAudience}`; } - core_1.debug(`ID token url is ${id_token_url}`); + (0, core_1.debug)(`ID token url is ${id_token_url}`); const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); + (0, core_1.setSecret)(id_token); return id_token; } catch (error) { @@ -4783,7 +7060,11 @@ exports.OidcClient = OidcClient; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4796,7 +7077,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -4841,6 +7122,107 @@ exports.toPlatformPath = toPlatformPath; /***/ }), +/***/ 5243: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; +const os_1 = __importDefault(__nccwpck_require__(2037)); +const exec = __importStar(__nccwpck_require__(1514)); +const getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { + silent: true + }); + const { stdout: name } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', undefined, { + silent: true + }); + return { + name: name.trim(), + version: version.trim() + }; +}); +const getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput('sw_vers', undefined, { + silent: true + }); + const version = (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; + const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ''; + return { + name, + version + }; +}); +const getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { + silent: true + }); + const [name, version] = stdout.trim().split('\n'); + return { + name, + version + }; +}); +exports.platform = os_1.default.platform(); +exports.arch = os_1.default.arch(); +exports.isWindows = exports.platform === 'win32'; +exports.isMacOS = exports.platform === 'darwin'; +exports.isLinux = exports.platform === 'linux'; +function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign(Object.assign({}, (yield (exports.isWindows + ? getWindowsInfo() + : exports.isMacOS + ? getMacOsInfo() + : getLinuxInfo()))), { platform: exports.platform, + arch: exports.arch, + isWindows: exports.isWindows, + isMacOS: exports.isMacOS, + isLinux: exports.isLinux }); + }); +} +exports.getDetails = getDetails; +//# sourceMappingURL=platform.js.map + +/***/ }), + /***/ 1327: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { @@ -5178,773 +7560,127 @@ exports.toCommandProperties = toCommandProperties; /***/ }), -/***/ 8974: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "v1", ({ - enumerable: true, - get: function () { - return _v.default; - } -})); -Object.defineProperty(exports, "v3", ({ - enumerable: true, - get: function () { - return _v2.default; - } -})); -Object.defineProperty(exports, "v4", ({ - enumerable: true, - get: function () { - return _v3.default; - } -})); -Object.defineProperty(exports, "v5", ({ - enumerable: true, - get: function () { - return _v4.default; - } -})); -Object.defineProperty(exports, "NIL", ({ - enumerable: true, - get: function () { - return _nil.default; - } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _version.default; - } -})); -Object.defineProperty(exports, "validate", ({ - enumerable: true, - get: function () { - return _validate.default; - } -})); -Object.defineProperty(exports, "stringify", ({ - enumerable: true, - get: function () { - return _stringify.default; - } -})); -Object.defineProperty(exports, "parse", ({ - enumerable: true, - get: function () { - return _parse.default; - } -})); - -var _v = _interopRequireDefault(__nccwpck_require__(1595)); - -var _v2 = _interopRequireDefault(__nccwpck_require__(6993)); - -var _v3 = _interopRequireDefault(__nccwpck_require__(1472)); - -var _v4 = _interopRequireDefault(__nccwpck_require__(6217)); - -var _nil = _interopRequireDefault(__nccwpck_require__(2381)); - -var _version = _interopRequireDefault(__nccwpck_require__(427)); - -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); - -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - -var _parse = _interopRequireDefault(__nccwpck_require__(6385)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/***/ }), - -/***/ 5842: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('md5').update(bytes).digest(); -} - -var _default = md5; -exports["default"] = _default; - -/***/ }), - -/***/ 2381: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports["default"] = _default; - -/***/ }), - -/***/ 6385: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} - -var _default = parse; -exports["default"] = _default; - -/***/ }), - -/***/ 6230: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; -exports["default"] = _default; - -/***/ }), - -/***/ 9784: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rng; - -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - -let poolPtr = rnds8Pool.length; - -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - - poolPtr = 0; - } - - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} - -/***/ }), - -/***/ 8844: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - - return _crypto.default.createHash('sha1').update(bytes).digest(); -} - -var _default = sha1; -exports["default"] = _default; - -/***/ }), - -/***/ 1458: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 1514: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; })); -exports["default"] = void 0; - -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getExecOutput = exports.exec = void 0; +const string_decoder_1 = __nccwpck_require__(1576); +const tr = __importStar(__nccwpck_require__(8159)); /** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code */ -const byteToHex = []; - -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); } - -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - - return uuid; +exports.exec = exec; +/** + * Exec a command and get the output. + * Output will be streamed to the live console. + * Returns promise with the exit code and collected stdout and stderr + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code, stdout, and stderr + */ +function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ''; + let stderr = ''; + //Using string decoder covers the case where a mult-byte character is split + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + //flush any remaining characters + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); } - -var _default = stringify; -exports["default"] = _default; +exports.getExecOutput = getExecOutput; +//# sourceMappingURL=exec.js.map /***/ }), -/***/ 1595: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 8159: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _rng = _interopRequireDefault(__nccwpck_require__(9784)); - -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; - -let _clockseq; // Previous uuid creation time - - -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || (0, _stringify.default)(b); -} - -var _default = v1; -exports["default"] = _default; - -/***/ }), - -/***/ 6993: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _v = _interopRequireDefault(__nccwpck_require__(5920)); - -var _md = _interopRequireDefault(__nccwpck_require__(5842)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v3 = (0, _v.default)('v3', 0x30, _md.default); -var _default = v3; -exports["default"] = _default; - -/***/ }), - -/***/ 5920: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -exports.URL = exports.DNS = void 0; - -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - -var _parse = _interopRequireDefault(__nccwpck_require__(6385)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; -} - -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; - -function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) - - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} - -/***/ }), - -/***/ 1472: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _rng = _interopRequireDefault(__nccwpck_require__(9784)); - -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function v4(options, buf, offset) { - options = options || {}; - - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return (0, _stringify.default)(rnds); -} - -var _default = v4; -exports["default"] = _default; - -/***/ }), - -/***/ 6217: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _v = _interopRequireDefault(__nccwpck_require__(5920)); - -var _sha = _interopRequireDefault(__nccwpck_require__(8844)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports["default"] = _default; - -/***/ }), - -/***/ 2609: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _regex = _interopRequireDefault(__nccwpck_require__(6230)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} - -var _default = validate; -exports["default"] = _default; - -/***/ }), - -/***/ 427: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - return parseInt(uuid.substr(14, 1), 16); -} - -var _default = version; -exports["default"] = _default; - -/***/ }), - -/***/ 1514: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getExecOutput = exports.exec = void 0; -const string_decoder_1 = __nccwpck_require__(1576); -const tr = __importStar(__nccwpck_require__(8159)); -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code - */ -function exec(commandLine, args, options) { - return __awaiter(this, void 0, void 0, function* () { - const commandArgs = tr.argStringToArray(commandLine); - if (commandArgs.length === 0) { - throw new Error(`Parameter 'commandLine' cannot be null or empty.`); - } - // Path to tool to execute should be first arg - const toolPath = commandArgs[0]; - args = commandArgs.slice(1).concat(args || []); - const runner = new tr.ToolRunner(toolPath, args, options); - return runner.exec(); - }); -} -exports.exec = exec; -/** - * Exec a command and get the output. - * Output will be streamed to the live console. - * Returns promise with the exit code and collected stdout and stderr - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code, stdout, and stderr - */ -function getExecOutput(commandLine, args, options) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - let stdout = ''; - let stderr = ''; - //Using string decoder covers the case where a mult-byte character is split - const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); - const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); - const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; - const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; - const stdErrListener = (data) => { - stderr += stderrDecoder.write(data); - if (originalStdErrListener) { - originalStdErrListener(data); - } - }; - const stdOutListener = (data) => { - stdout += stdoutDecoder.write(data); - if (originalStdoutListener) { - originalStdoutListener(data); - } - }; - const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); - const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); - //flush any remaining characters - stdout += stdoutDecoder.end(); - stderr += stderrDecoder.end(); - return { - exitCode, - stdout, - stderr - }; - }); -} -exports.getExecOutput = getExecOutput; -//# sourceMappingURL=exec.js.map - -/***/ }), - -/***/ 8159: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -9232,7 +10968,7 @@ const semver = __importStar(__nccwpck_require__(562)); const stream = __importStar(__nccwpck_require__(2781)); const util = __importStar(__nccwpck_require__(3837)); const assert_1 = __nccwpck_require__(9491); -const v4_1 = __importDefault(__nccwpck_require__(7468)); +const v4_1 = __importDefault(__nccwpck_require__(824)); const exec_1 = __nccwpck_require__(1514); const retry_helper_1 = __nccwpck_require__(8279); class HTTPError extends Error { @@ -11503,90 +13239,6 @@ function coerce (version, options) { } -/***/ }), - -/***/ 7701: -/***/ ((module) => { - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -var byteToHex = []; -for (var i = 0; i < 256; ++i) { - byteToHex[i] = (i + 0x100).toString(16).substr(1); -} - -function bytesToUuid(buf, offset) { - var i = offset || 0; - var bth = byteToHex; - // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 - return ([ - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]] - ]).join(''); -} - -module.exports = bytesToUuid; - - -/***/ }), - -/***/ 7269: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// Unique ID creation requires a high quality random # generator. In node.js -// this is pretty straight-forward - we use the crypto API. - -var crypto = __nccwpck_require__(6113); - -module.exports = function nodeRNG() { - return crypto.randomBytes(16); -}; - - -/***/ }), - -/***/ 7468: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var rng = __nccwpck_require__(7269); -var bytesToUuid = __nccwpck_require__(7701); - -function v4(options, buf, offset) { - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options === 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ++ii) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || bytesToUuid(rnds); -} - -module.exports = v4; - - /***/ }), /***/ 2557: @@ -50023,9127 +51675,14654 @@ exports.VERSION = '1.6.0'; /***/ }), -/***/ 4812: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 9912: +/***/ (function(__unused_webpack_module, exports) { -module.exports = -{ - parallel : __nccwpck_require__(8210), - serial : __nccwpck_require__(445), - serialOrdered : __nccwpck_require__(3578) +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); }; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClientStreamingCall = void 0; +/** + * A client streaming RPC call. This means that the clients sends 0, 1, or + * more messages to the server, and the server replies with exactly one + * message. + */ +class ClientStreamingCall { + constructor(method, requestHeaders, request, headers, response, status, trailers) { + this.method = method; + this.requestHeaders = requestHeaders; + this.requests = request; + this.headers = headers; + this.response = response; + this.status = status; + this.trailers = trailers; + } + /** + * Instead of awaiting the response status and trailers, you can + * just as well await this call itself to receive the server outcome. + * Note that it may still be valid to send more request messages. + */ + then(onfulfilled, onrejected) { + return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason)); + } + promiseFinished() { + return __awaiter(this, void 0, void 0, function* () { + let [headers, response, status, trailers] = yield Promise.all([this.headers, this.response, this.status, this.trailers]); + return { + method: this.method, + requestHeaders: this.requestHeaders, + headers, + response, + status, + trailers + }; + }); + } +} +exports.ClientStreamingCall = ClientStreamingCall; /***/ }), -/***/ 1700: -/***/ ((module) => { - -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); +/***/ 5702: +/***/ ((__unused_webpack_module, exports) => { - // reset leftover jobs - state.jobs = {}; -} +"use strict"; -/** - * Cleans up leftover job by invoking abort function for the provided job id +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Deferred = exports.DeferredState = void 0; +var DeferredState; +(function (DeferredState) { + DeferredState[DeferredState["PENDING"] = 0] = "PENDING"; + DeferredState[DeferredState["REJECTED"] = 1] = "REJECTED"; + DeferredState[DeferredState["RESOLVED"] = 2] = "RESOLVED"; +})(DeferredState = exports.DeferredState || (exports.DeferredState = {})); +/** + * A deferred promise. This is a "controller" for a promise, which lets you + * pass a promise around and reject or resolve it from the outside. * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } + * Warning: This class is to be used with care. Using it can make code very + * difficult to read. It is intended for use in library code that exposes + * promises, not for regular business logic. + */ +class Deferred { + /** + * @param preventUnhandledRejectionWarning - prevents the warning + * "Unhandled Promise rejection" by adding a noop rejection handler. + * Working with calls returned from the runtime-rpc package in an + * async function usually means awaiting one call property after + * the other. This means that the "status" is not being awaited when + * an earlier await for the "headers" is rejected. This causes the + * "unhandled promise reject" warning. A more correct behaviour for + * calls might be to become aware whether at least one of the + * promises is handled and swallow the rejection warning for the + * others. + */ + constructor(preventUnhandledRejectionWarning = true) { + this._state = DeferredState.PENDING; + this._promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; + }); + if (preventUnhandledRejectionWarning) { + this._promise.catch(_ => { }); + } + } + /** + * Get the current state of the promise. + */ + get state() { + return this._state; + } + /** + * Get the deferred promise. + */ + get promise() { + return this._promise; + } + /** + * Resolve the promise. Throws if the promise is already resolved or rejected. + */ + resolve(value) { + if (this.state !== DeferredState.PENDING) + throw new Error(`cannot resolve ${DeferredState[this.state].toLowerCase()}`); + this._resolve(value); + this._state = DeferredState.RESOLVED; + } + /** + * Reject the promise. Throws if the promise is already resolved or rejected. + */ + reject(reason) { + if (this.state !== DeferredState.PENDING) + throw new Error(`cannot reject ${DeferredState[this.state].toLowerCase()}`); + this._reject(reason); + this._state = DeferredState.REJECTED; + } + /** + * Resolve the promise. Ignore if not pending. + */ + resolvePending(val) { + if (this._state === DeferredState.PENDING) + this.resolve(val); + } + /** + * Reject the promise. Ignore if not pending. + */ + rejectPending(reason) { + if (this._state === DeferredState.PENDING) + this.reject(reason); + } } +exports.Deferred = Deferred; /***/ }), -/***/ 2794: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var defer = __nccwpck_require__(5295); +/***/ 7042: +/***/ (function(__unused_webpack_module, exports) { -// API -module.exports = async; +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.DuplexStreamingCall = void 0; /** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback + * A duplex streaming RPC call. This means that the clients sends an + * arbitrary amount of messages to the server, while at the same time, + * the server sends an arbitrary amount of messages to the client. */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); +class DuplexStreamingCall { + constructor(method, requestHeaders, request, headers, response, status, trailers) { + this.method = method; + this.requestHeaders = requestHeaders; + this.requests = request; + this.headers = headers; + this.responses = response; + this.status = status; + this.trailers = trailers; } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); + /** + * Instead of awaiting the response status and trailers, you can + * just as well await this call itself to receive the server outcome. + * Note that it may still be valid to send more request messages. + */ + then(onfulfilled, onrejected) { + return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason)); + } + promiseFinished() { + return __awaiter(this, void 0, void 0, function* () { + let [headers, status, trailers] = yield Promise.all([this.headers, this.status, this.trailers]); + return { + method: this.method, + requestHeaders: this.requestHeaders, + headers, + status, + trailers, + }; + }); } - }; } +exports.DuplexStreamingCall = DuplexStreamingCall; /***/ }), -/***/ 5295: -/***/ ((module) => { - -module.exports = defer; +/***/ 12: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); +"use strict"; - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} +// Public API of the rpc runtime. +// Note: we do not use `export * from ...` to help tree shakers, +// webpack verbose output hints that this should be useful +Object.defineProperty(exports, "__esModule", ({ value: true })); +var service_type_1 = __nccwpck_require__(4107); +Object.defineProperty(exports, "ServiceType", ({ enumerable: true, get: function () { return service_type_1.ServiceType; } })); +var reflection_info_1 = __nccwpck_require__(4331); +Object.defineProperty(exports, "readMethodOptions", ({ enumerable: true, get: function () { return reflection_info_1.readMethodOptions; } })); +Object.defineProperty(exports, "readMethodOption", ({ enumerable: true, get: function () { return reflection_info_1.readMethodOption; } })); +Object.defineProperty(exports, "readServiceOption", ({ enumerable: true, get: function () { return reflection_info_1.readServiceOption; } })); +var rpc_error_1 = __nccwpck_require__(3159); +Object.defineProperty(exports, "RpcError", ({ enumerable: true, get: function () { return rpc_error_1.RpcError; } })); +var rpc_options_1 = __nccwpck_require__(7386); +Object.defineProperty(exports, "mergeRpcOptions", ({ enumerable: true, get: function () { return rpc_options_1.mergeRpcOptions; } })); +var rpc_output_stream_1 = __nccwpck_require__(6637); +Object.defineProperty(exports, "RpcOutputStreamController", ({ enumerable: true, get: function () { return rpc_output_stream_1.RpcOutputStreamController; } })); +var test_transport_1 = __nccwpck_require__(7008); +Object.defineProperty(exports, "TestTransport", ({ enumerable: true, get: function () { return test_transport_1.TestTransport; } })); +var deferred_1 = __nccwpck_require__(5702); +Object.defineProperty(exports, "Deferred", ({ enumerable: true, get: function () { return deferred_1.Deferred; } })); +Object.defineProperty(exports, "DeferredState", ({ enumerable: true, get: function () { return deferred_1.DeferredState; } })); +var duplex_streaming_call_1 = __nccwpck_require__(7042); +Object.defineProperty(exports, "DuplexStreamingCall", ({ enumerable: true, get: function () { return duplex_streaming_call_1.DuplexStreamingCall; } })); +var client_streaming_call_1 = __nccwpck_require__(9912); +Object.defineProperty(exports, "ClientStreamingCall", ({ enumerable: true, get: function () { return client_streaming_call_1.ClientStreamingCall; } })); +var server_streaming_call_1 = __nccwpck_require__(66); +Object.defineProperty(exports, "ServerStreamingCall", ({ enumerable: true, get: function () { return server_streaming_call_1.ServerStreamingCall; } })); +var unary_call_1 = __nccwpck_require__(164); +Object.defineProperty(exports, "UnaryCall", ({ enumerable: true, get: function () { return unary_call_1.UnaryCall; } })); +var rpc_interceptor_1 = __nccwpck_require__(1680); +Object.defineProperty(exports, "stackIntercept", ({ enumerable: true, get: function () { return rpc_interceptor_1.stackIntercept; } })); +Object.defineProperty(exports, "stackDuplexStreamingInterceptors", ({ enumerable: true, get: function () { return rpc_interceptor_1.stackDuplexStreamingInterceptors; } })); +Object.defineProperty(exports, "stackClientStreamingInterceptors", ({ enumerable: true, get: function () { return rpc_interceptor_1.stackClientStreamingInterceptors; } })); +Object.defineProperty(exports, "stackServerStreamingInterceptors", ({ enumerable: true, get: function () { return rpc_interceptor_1.stackServerStreamingInterceptors; } })); +Object.defineProperty(exports, "stackUnaryInterceptors", ({ enumerable: true, get: function () { return rpc_interceptor_1.stackUnaryInterceptors; } })); +var server_call_context_1 = __nccwpck_require__(5320); +Object.defineProperty(exports, "ServerCallContextController", ({ enumerable: true, get: function () { return server_call_context_1.ServerCallContextController; } })); /***/ }), -/***/ 9023: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var async = __nccwpck_require__(2794) - , abort = __nccwpck_require__(1700) - ; +/***/ 4331: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// API -module.exports = iterate; +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.readServiceOption = exports.readMethodOption = exports.readMethodOptions = exports.normalizeMethodInfo = void 0; +const runtime_1 = __nccwpck_require__(4061); /** - * Iterates over each job object + * Turns PartialMethodInfo into MethodInfo. + */ +function normalizeMethodInfo(method, service) { + var _a, _b, _c; + let m = method; + m.service = service; + m.localName = (_a = m.localName) !== null && _a !== void 0 ? _a : runtime_1.lowerCamelCase(m.name); + // noinspection PointlessBooleanExpressionJS + m.serverStreaming = !!m.serverStreaming; + // noinspection PointlessBooleanExpressionJS + m.clientStreaming = !!m.clientStreaming; + m.options = (_b = m.options) !== null && _b !== void 0 ? _b : {}; + m.idempotency = (_c = m.idempotency) !== null && _c !== void 0 ? _c : undefined; + return m; +} +exports.normalizeMethodInfo = normalizeMethodInfo; +/** + * Read custom method options from a generated service client. * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed + * @deprecated use readMethodOption() */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); +function readMethodOptions(service, methodName, extensionName, extensionType) { + var _a; + const options = (_a = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a === void 0 ? void 0 : _a.options; + return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : undefined; +} +exports.readMethodOptions = readMethodOptions; +function readMethodOption(service, methodName, extensionName, extensionType) { + var _a; + const options = (_a = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a === void 0 ? void 0 : _a.options; + if (!options) { + return undefined; } - else - { - state.results[key] = output; + const optionVal = options[extensionName]; + if (optionVal === undefined) { + return optionVal; } - - // return salvaged results - callback(error, state.results); - }); + return extensionType ? extensionType.fromJson(optionVal) : optionVal; } - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } - - return aborter; +exports.readMethodOption = readMethodOption; +function readServiceOption(service, extensionName, extensionType) { + const options = service.options; + if (!options) { + return undefined; + } + const optionVal = options[extensionName]; + if (optionVal === undefined) { + return optionVal; + } + return extensionType ? extensionType.fromJson(optionVal) : optionVal; } +exports.readServiceOption = readServiceOption; /***/ }), -/***/ 2474: -/***/ ((module) => { +/***/ 3159: +/***/ ((__unused_webpack_module, exports) => { -// API -module.exports = state; +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RpcError = void 0; /** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object + * An error that occurred while calling a RPC method. */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length +class RpcError extends Error { + constructor(message, code = 'UNKNOWN', meta) { + super(message); + this.name = 'RpcError'; + // see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#example + Object.setPrototypeOf(this, new.target.prototype); + this.code = code; + this.meta = meta !== null && meta !== void 0 ? meta : {}; + } + toString() { + const l = [this.name + ': ' + this.message]; + if (this.code) { + l.push(''); + l.push('Code: ' + this.code); + } + if (this.serviceName && this.methodName) { + l.push('Method: ' + this.serviceName + '/' + this.methodName); + } + let m = Object.entries(this.meta); + if (m.length) { + l.push(''); + l.push('Meta:'); + for (let [k, v] of m) { + l.push(` ${k}: ${v}`); + } + } + return l.join('\n'); } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; } +exports.RpcError = RpcError; /***/ }), -/***/ 7942: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var abort = __nccwpck_require__(1700) - , async = __nccwpck_require__(2794) - ; +/***/ 1680: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// API -module.exports = terminator; +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.stackDuplexStreamingInterceptors = exports.stackClientStreamingInterceptors = exports.stackServerStreamingInterceptors = exports.stackUnaryInterceptors = exports.stackIntercept = void 0; +const runtime_1 = __nccwpck_require__(4061); /** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination + * Creates a "stack" of of all interceptors specified in the given `RpcOptions`. + * Used by generated client implementations. + * @internal */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); +function stackIntercept(kind, transport, method, options, input) { + var _a, _b, _c, _d; + if (kind == "unary") { + let tail = (mtd, inp, opt) => transport.unary(mtd, inp, opt); + for (const curr of ((_a = options.interceptors) !== null && _a !== void 0 ? _a : []).filter(i => i.interceptUnary).reverse()) { + const next = tail; + tail = (mtd, inp, opt) => curr.interceptUnary(next, mtd, inp, opt); + } + return tail(method, input, options); + } + if (kind == "serverStreaming") { + let tail = (mtd, inp, opt) => transport.serverStreaming(mtd, inp, opt); + for (const curr of ((_b = options.interceptors) !== null && _b !== void 0 ? _b : []).filter(i => i.interceptServerStreaming).reverse()) { + const next = tail; + tail = (mtd, inp, opt) => curr.interceptServerStreaming(next, mtd, inp, opt); + } + return tail(method, input, options); + } + if (kind == "clientStreaming") { + let tail = (mtd, opt) => transport.clientStreaming(mtd, opt); + for (const curr of ((_c = options.interceptors) !== null && _c !== void 0 ? _c : []).filter(i => i.interceptClientStreaming).reverse()) { + const next = tail; + tail = (mtd, opt) => curr.interceptClientStreaming(next, mtd, opt); + } + return tail(method, options); + } + if (kind == "duplex") { + let tail = (mtd, opt) => transport.duplex(mtd, opt); + for (const curr of ((_d = options.interceptors) !== null && _d !== void 0 ? _d : []).filter(i => i.interceptDuplex).reverse()) { + const next = tail; + tail = (mtd, opt) => curr.interceptDuplex(next, mtd, opt); + } + return tail(method, options); + } + runtime_1.assertNever(kind); } +exports.stackIntercept = stackIntercept; +/** + * @deprecated replaced by `stackIntercept()`, still here to support older generated code + */ +function stackUnaryInterceptors(transport, method, input, options) { + return stackIntercept("unary", transport, method, options, input); +} +exports.stackUnaryInterceptors = stackUnaryInterceptors; +/** + * @deprecated replaced by `stackIntercept()`, still here to support older generated code + */ +function stackServerStreamingInterceptors(transport, method, input, options) { + return stackIntercept("serverStreaming", transport, method, options, input); +} +exports.stackServerStreamingInterceptors = stackServerStreamingInterceptors; +/** + * @deprecated replaced by `stackIntercept()`, still here to support older generated code + */ +function stackClientStreamingInterceptors(transport, method, options) { + return stackIntercept("clientStreaming", transport, method, options); +} +exports.stackClientStreamingInterceptors = stackClientStreamingInterceptors; +/** + * @deprecated replaced by `stackIntercept()`, still here to support older generated code + */ +function stackDuplexStreamingInterceptors(transport, method, options) { + return stackIntercept("duplex", transport, method, options); +} +exports.stackDuplexStreamingInterceptors = stackDuplexStreamingInterceptors; /***/ }), -/***/ 8210: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var iterate = __nccwpck_require__(9023) - , initState = __nccwpck_require__(2474) - , terminator = __nccwpck_require__(7942) - ; +/***/ 7386: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// Public API -module.exports = parallel; +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.mergeRpcOptions = void 0; +const runtime_1 = __nccwpck_require__(4061); /** - * Runs iterator over provided array elements in parallel + * Merges custom RPC options with defaults. Returns a new instance and keeps + * the "defaults" and the "options" unmodified. * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator + * Merges `RpcMetadata` "meta", overwriting values from "defaults" with + * values from "options". Does not append values to existing entries. + * + * Merges "jsonOptions", including "jsonOptions.typeRegistry", by creating + * a new array that contains types from "options.jsonOptions.typeRegistry" + * first, then types from "defaults.jsonOptions.typeRegistry". + * + * Merges "binaryOptions". + * + * Merges "interceptors" by creating a new array that contains interceptors + * from "defaults" first, then interceptors from "options". + * + * Works with objects that extend `RpcOptions`, but only if the added + * properties are of type Date, primitive like string, boolean, or Array + * of primitives. If you have other property types, you have to merge them + * yourself. */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); +function mergeRpcOptions(defaults, options) { + if (!options) + return defaults; + let o = {}; + copy(defaults, o); + copy(options, o); + for (let key of Object.keys(options)) { + let val = options[key]; + switch (key) { + case "jsonOptions": + o.jsonOptions = runtime_1.mergeJsonOptions(defaults.jsonOptions, o.jsonOptions); + break; + case "binaryOptions": + o.binaryOptions = runtime_1.mergeBinaryOptions(defaults.binaryOptions, o.binaryOptions); + break; + case "meta": + o.meta = {}; + copy(defaults.meta, o.meta); + copy(options.meta, o.meta); + break; + case "interceptors": + o.interceptors = defaults.interceptors ? defaults.interceptors.concat(val) : val.concat(); + break; + } + } + return o; +} +exports.mergeRpcOptions = mergeRpcOptions; +function copy(a, into) { + if (!a) return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); + let c = into; + for (let [k, v] of Object.entries(a)) { + if (v instanceof Date) + c[k] = new Date(v.getTime()); + else if (Array.isArray(v)) + c[k] = v.concat(); + else + c[k] = v; + } } /***/ }), -/***/ 445: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var serialOrdered = __nccwpck_require__(3578); +/***/ 6637: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// Public API -module.exports = serial; +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RpcOutputStreamController = void 0; +const deferred_1 = __nccwpck_require__(5702); +const runtime_1 = __nccwpck_require__(4061); /** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator + * A `RpcOutputStream` that you control. */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); +class RpcOutputStreamController { + constructor() { + this._lis = { + nxt: [], + msg: [], + err: [], + cmp: [], + }; + this._closed = false; + } + // --- RpcOutputStream callback API + onNext(callback) { + return this.addLis(callback, this._lis.nxt); + } + onMessage(callback) { + return this.addLis(callback, this._lis.msg); + } + onError(callback) { + return this.addLis(callback, this._lis.err); + } + onComplete(callback) { + return this.addLis(callback, this._lis.cmp); + } + addLis(callback, list) { + list.push(callback); + return () => { + let i = list.indexOf(callback); + if (i >= 0) + list.splice(i, 1); + }; + } + // remove all listeners + clearLis() { + for (let l of Object.values(this._lis)) + l.splice(0, l.length); + } + // --- Controller API + /** + * Is this stream already closed by a completion or error? + */ + get closed() { + return this._closed !== false; + } + /** + * Emit message, close with error, or close successfully, but only one + * at a time. + * Can be used to wrap a stream by using the other stream's `onNext`. + */ + notifyNext(message, error, complete) { + runtime_1.assert((message ? 1 : 0) + (error ? 1 : 0) + (complete ? 1 : 0) <= 1, 'only one emission at a time'); + if (message) + this.notifyMessage(message); + if (error) + this.notifyError(error); + if (complete) + this.notifyComplete(); + } + /** + * Emits a new message. Throws if stream is closed. + * + * Triggers onNext and onMessage callbacks. + */ + notifyMessage(message) { + runtime_1.assert(!this.closed, 'stream is closed'); + this.pushIt({ value: message, done: false }); + this._lis.msg.forEach(l => l(message)); + this._lis.nxt.forEach(l => l(message, undefined, false)); + } + /** + * Closes the stream with an error. Throws if stream is closed. + * + * Triggers onNext and onError callbacks. + */ + notifyError(error) { + runtime_1.assert(!this.closed, 'stream is closed'); + this._closed = error; + this.pushIt(error); + this._lis.err.forEach(l => l(error)); + this._lis.nxt.forEach(l => l(undefined, error, false)); + this.clearLis(); + } + /** + * Closes the stream successfully. Throws if stream is closed. + * + * Triggers onNext and onComplete callbacks. + */ + notifyComplete() { + runtime_1.assert(!this.closed, 'stream is closed'); + this._closed = true; + this.pushIt({ value: null, done: true }); + this._lis.cmp.forEach(l => l()); + this._lis.nxt.forEach(l => l(undefined, undefined, true)); + this.clearLis(); + } + /** + * Creates an async iterator (that can be used with `for await {...}`) + * to consume the stream. + * + * Some things to note: + * - If an error occurs, the `for await` will throw it. + * - If an error occurred before the `for await` was started, `for await` + * will re-throw it. + * - If the stream is already complete, the `for await` will be empty. + * - If your `for await` consumes slower than the stream produces, + * for example because you are relaying messages in a slow operation, + * messages are queued. + */ + [Symbol.asyncIterator]() { + // init the iterator state, enabling pushIt() + if (!this._itState) { + this._itState = { q: [] }; + } + // if we are closed, we are definitely not receiving any more messages. + // but we can't let the iterator get stuck. we want to either: + // a) finish the new iterator immediately, because we are completed + // b) reject the new iterator, because we errored + if (this._closed === true) + this.pushIt({ value: null, done: true }); + else if (this._closed !== false) + this.pushIt(this._closed); + // the async iterator + return { + next: () => { + let state = this._itState; + runtime_1.assert(state, "bad state"); // if we don't have a state here, code is broken + // there should be no pending result. + // did the consumer call next() before we resolved our previous result promise? + runtime_1.assert(!state.p, "iterator contract broken"); + // did we produce faster than the iterator consumed? + // return the oldest result from the queue. + let first = state.q.shift(); + if (first) + return ("value" in first) ? Promise.resolve(first) : Promise.reject(first); + // we have no result ATM, but we promise one. + // as soon as we have a result, we must resolve promise. + state.p = new deferred_1.Deferred(); + return state.p.promise; + }, + }; + } + // "push" a new iterator result. + // this either resolves a pending promise, or enqueues the result. + pushIt(result) { + let state = this._itState; + if (!state) + return; + // is the consumer waiting for us? + if (state.p) { + // yes, consumer is waiting for this promise. + const p = state.p; + runtime_1.assert(p.state == deferred_1.DeferredState.PENDING, "iterator contract broken"); + // resolve the promise + ("value" in result) ? p.resolve(result) : p.reject(result); + // must cleanup, otherwise iterator.next() would pick it up again. + delete state.p; + } + else { + // we are producing faster than the iterator consumes. + // push result onto queue. + state.q.push(result); + } + } } +exports.RpcOutputStreamController = RpcOutputStreamController; /***/ }), -/***/ 3578: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var iterate = __nccwpck_require__(9023) - , initState = __nccwpck_require__(2474) - , terminator = __nccwpck_require__(7942) - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; +/***/ 5320: +/***/ ((__unused_webpack_module, exports) => { -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); +"use strict"; - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ServerCallContextController = void 0; +class ServerCallContextController { + constructor(method, headers, deadline, sendResponseHeadersFn, defaultStatus = { code: 'OK', detail: '' }) { + this._cancelled = false; + this._listeners = []; + this.method = method; + this.headers = headers; + this.deadline = deadline; + this.trailers = {}; + this._sendRH = sendResponseHeadersFn; + this.status = defaultStatus; } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; + /** + * Set the call cancelled. + * + * Invokes all callbacks registered with onCancel() and + * sets `cancelled = true`. + */ + notifyCancelled() { + if (!this._cancelled) { + this._cancelled = true; + for (let l of this._listeners) { + l(); + } + } + } + /** + * Send response headers. + */ + sendResponseHeaders(data) { + this._sendRH(data); + } + /** + * Is the call cancelled? + * + * When the client closes the connection before the server + * is done, the call is cancelled. + * + * If you want to cancel a request on the server, throw a + * RpcError with the CANCELLED status code. + */ + get cancelled() { + return this._cancelled; + } + /** + * Add a callback for cancellation. + */ + onCancel(callback) { + const l = this._listeners; + l.push(callback); + return () => { + let i = l.indexOf(callback); + if (i >= 0) + l.splice(i, 1); + }; } +} +exports.ServerCallContextController = ServerCallContextController; - // done here - callback(null, state.results); - }); - return terminator.bind(state, callback); -} +/***/ }), -/* - * -- Sort methods - */ +/***/ 66: +/***/ (function(__unused_webpack_module, exports) { -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ServerStreamingCall = void 0; /** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result + * A server streaming RPC call. The client provides exactly one input message + * but the server may respond with 0, 1, or more messages. */ -function descending(a, b) -{ - return -1 * ascending(a, b); +class ServerStreamingCall { + constructor(method, requestHeaders, request, headers, response, status, trailers) { + this.method = method; + this.requestHeaders = requestHeaders; + this.request = request; + this.headers = headers; + this.responses = response; + this.status = status; + this.trailers = trailers; + } + /** + * Instead of awaiting the response status and trailers, you can + * just as well await this call itself to receive the server outcome. + * You should first setup some listeners to the `request` to + * see the actual messages the server replied with. + */ + then(onfulfilled, onrejected) { + return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason)); + } + promiseFinished() { + return __awaiter(this, void 0, void 0, function* () { + let [headers, status, trailers] = yield Promise.all([this.headers, this.status, this.trailers]); + return { + method: this.method, + requestHeaders: this.requestHeaders, + request: this.request, + headers, + status, + trailers, + }; + }); + } } +exports.ServerStreamingCall = ServerStreamingCall; /***/ }), -/***/ 9417: -/***/ ((module) => { +/***/ 4107: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -module.exports = balanced; -function balanced(a, b, str) { - if (a instanceof RegExp) a = maybeMatch(a, str); - if (b instanceof RegExp) b = maybeMatch(b, str); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ServiceType = void 0; +const reflection_info_1 = __nccwpck_require__(4331); +class ServiceType { + constructor(typeName, methods, options) { + this.typeName = typeName; + this.methods = methods.map(i => reflection_info_1.normalizeMethodInfo(i, this)); + this.options = options !== null && options !== void 0 ? options : {}; + } +} +exports.ServiceType = ServiceType; - var r = range(a, b, str); - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) - }; -} +/***/ }), -function maybeMatch(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; -} +/***/ 7008: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -balanced.range = range; -function range(a, b, str) { - var begs, beg, left, right, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; +"use strict"; - if (ai >= 0 && bi > 0) { - if(a===b) { - return [ai, bi]; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TestTransport = void 0; +const rpc_error_1 = __nccwpck_require__(3159); +const runtime_1 = __nccwpck_require__(4061); +const rpc_output_stream_1 = __nccwpck_require__(6637); +const rpc_options_1 = __nccwpck_require__(7386); +const unary_call_1 = __nccwpck_require__(164); +const server_streaming_call_1 = __nccwpck_require__(66); +const client_streaming_call_1 = __nccwpck_require__(9912); +const duplex_streaming_call_1 = __nccwpck_require__(7042); +/** + * Transport for testing. + */ +class TestTransport { + /** + * Initialize with mock data. Omitted fields have default value. + */ + constructor(data) { + /** + * Suppress warning / error about uncaught rejections of + * "status" and "trailers". + */ + this.suppressUncaughtRejections = true; + this.headerDelay = 10; + this.responseDelay = 50; + this.betweenResponseDelay = 10; + this.afterResponseDelay = 10; + this.data = data !== null && data !== void 0 ? data : {}; } - begs = []; - left = str.length; - - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); - } else if (begs.length == 1) { - result = [ begs.pop(), bi ]; - } else { - beg = begs.pop(); - if (beg < left) { - left = beg; - right = bi; + /** + * Sent message(s) during the last operation. + */ + get sentMessages() { + if (this.lastInput instanceof TestInputStream) { + return this.lastInput.sent; } - - bi = str.indexOf(b, i + 1); - } - - i = ai < bi && ai >= 0 ? ai : bi; + else if (typeof this.lastInput == "object") { + return [this.lastInput.single]; + } + return []; } - - if (begs.length) { - result = [ left, right ]; + /** + * Sending message(s) completed? + */ + get sendComplete() { + if (this.lastInput instanceof TestInputStream) { + return this.lastInput.completed; + } + else if (typeof this.lastInput == "object") { + return true; + } + return false; + } + // Creates a promise for response headers from the mock data. + promiseHeaders() { + var _a; + const headers = (_a = this.data.headers) !== null && _a !== void 0 ? _a : TestTransport.defaultHeaders; + return headers instanceof rpc_error_1.RpcError + ? Promise.reject(headers) + : Promise.resolve(headers); + } + // Creates a promise for a single, valid, message from the mock data. + promiseSingleResponse(method) { + if (this.data.response instanceof rpc_error_1.RpcError) { + return Promise.reject(this.data.response); + } + let r; + if (Array.isArray(this.data.response)) { + runtime_1.assert(this.data.response.length > 0); + r = this.data.response[0]; + } + else if (this.data.response !== undefined) { + r = this.data.response; + } + else { + r = method.O.create(); + } + runtime_1.assert(method.O.is(r)); + return Promise.resolve(r); + } + /** + * Pushes response messages from the mock data to the output stream. + * If an error response, status or trailers are mocked, the stream is + * closed with the respective error. + * Otherwise, stream is completed successfully. + * + * The returned promise resolves when the stream is closed. It should + * not reject. If it does, code is broken. + */ + streamResponses(method, stream, abort) { + return __awaiter(this, void 0, void 0, function* () { + // normalize "data.response" into an array of valid output messages + const messages = []; + if (this.data.response === undefined) { + messages.push(method.O.create()); + } + else if (Array.isArray(this.data.response)) { + for (let msg of this.data.response) { + runtime_1.assert(method.O.is(msg)); + messages.push(msg); + } + } + else if (!(this.data.response instanceof rpc_error_1.RpcError)) { + runtime_1.assert(method.O.is(this.data.response)); + messages.push(this.data.response); + } + // start the stream with an initial delay. + // if the request is cancelled, notify() error and exit. + try { + yield delay(this.responseDelay, abort)(undefined); + } + catch (error) { + stream.notifyError(error); + return; + } + // if error response was mocked, notify() error (stream is now closed with error) and exit. + if (this.data.response instanceof rpc_error_1.RpcError) { + stream.notifyError(this.data.response); + return; + } + // regular response messages were mocked. notify() them. + for (let msg of messages) { + stream.notifyMessage(msg); + // add a short delay between responses + // if the request is cancelled, notify() error and exit. + try { + yield delay(this.betweenResponseDelay, abort)(undefined); + } + catch (error) { + stream.notifyError(error); + return; + } + } + // error status was mocked, notify() error (stream is now closed with error) and exit. + if (this.data.status instanceof rpc_error_1.RpcError) { + stream.notifyError(this.data.status); + return; + } + // error trailers were mocked, notify() error (stream is now closed with error) and exit. + if (this.data.trailers instanceof rpc_error_1.RpcError) { + stream.notifyError(this.data.trailers); + return; + } + // stream completed successfully + stream.notifyComplete(); + }); + } + // Creates a promise for response status from the mock data. + promiseStatus() { + var _a; + const status = (_a = this.data.status) !== null && _a !== void 0 ? _a : TestTransport.defaultStatus; + return status instanceof rpc_error_1.RpcError + ? Promise.reject(status) + : Promise.resolve(status); + } + // Creates a promise for response trailers from the mock data. + promiseTrailers() { + var _a; + const trailers = (_a = this.data.trailers) !== null && _a !== void 0 ? _a : TestTransport.defaultTrailers; + return trailers instanceof rpc_error_1.RpcError + ? Promise.reject(trailers) + : Promise.resolve(trailers); + } + maybeSuppressUncaught(...promise) { + if (this.suppressUncaughtRejections) { + for (let p of promise) { + p.catch(() => { + }); + } + } + } + mergeOptions(options) { + return rpc_options_1.mergeRpcOptions({}, options); + } + unary(method, input, options) { + var _a; + const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders() + .then(delay(this.headerDelay, options.abort)), responsePromise = headersPromise + .catch(_ => { + }) + .then(delay(this.responseDelay, options.abort)) + .then(_ => this.promiseSingleResponse(method)), statusPromise = responsePromise + .catch(_ => { + }) + .then(delay(this.afterResponseDelay, options.abort)) + .then(_ => this.promiseStatus()), trailersPromise = responsePromise + .catch(_ => { + }) + .then(delay(this.afterResponseDelay, options.abort)) + .then(_ => this.promiseTrailers()); + this.maybeSuppressUncaught(statusPromise, trailersPromise); + this.lastInput = { single: input }; + return new unary_call_1.UnaryCall(method, requestHeaders, input, headersPromise, responsePromise, statusPromise, trailersPromise); + } + serverStreaming(method, input, options) { + var _a; + const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders() + .then(delay(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise + .then(delay(this.responseDelay, options.abort)) + .catch(() => { + }) + .then(() => this.streamResponses(method, outputStream, options.abort)) + .then(delay(this.afterResponseDelay, options.abort)), statusPromise = responseStreamClosedPromise + .then(() => this.promiseStatus()), trailersPromise = responseStreamClosedPromise + .then(() => this.promiseTrailers()); + this.maybeSuppressUncaught(statusPromise, trailersPromise); + this.lastInput = { single: input }; + return new server_streaming_call_1.ServerStreamingCall(method, requestHeaders, input, headersPromise, outputStream, statusPromise, trailersPromise); + } + clientStreaming(method, options) { + var _a; + const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders() + .then(delay(this.headerDelay, options.abort)), responsePromise = headersPromise + .catch(_ => { + }) + .then(delay(this.responseDelay, options.abort)) + .then(_ => this.promiseSingleResponse(method)), statusPromise = responsePromise + .catch(_ => { + }) + .then(delay(this.afterResponseDelay, options.abort)) + .then(_ => this.promiseStatus()), trailersPromise = responsePromise + .catch(_ => { + }) + .then(delay(this.afterResponseDelay, options.abort)) + .then(_ => this.promiseTrailers()); + this.maybeSuppressUncaught(statusPromise, trailersPromise); + this.lastInput = new TestInputStream(this.data, options.abort); + return new client_streaming_call_1.ClientStreamingCall(method, requestHeaders, this.lastInput, headersPromise, responsePromise, statusPromise, trailersPromise); + } + duplex(method, options) { + var _a; + const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders() + .then(delay(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise + .then(delay(this.responseDelay, options.abort)) + .catch(() => { + }) + .then(() => this.streamResponses(method, outputStream, options.abort)) + .then(delay(this.afterResponseDelay, options.abort)), statusPromise = responseStreamClosedPromise + .then(() => this.promiseStatus()), trailersPromise = responseStreamClosedPromise + .then(() => this.promiseTrailers()); + this.maybeSuppressUncaught(statusPromise, trailersPromise); + this.lastInput = new TestInputStream(this.data, options.abort); + return new duplex_streaming_call_1.DuplexStreamingCall(method, requestHeaders, this.lastInput, headersPromise, outputStream, statusPromise, trailersPromise); } - } - - return result; -} - - -/***/ }), - -/***/ 3717: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var concatMap = __nccwpck_require__(6891); -var balanced = __nccwpck_require__(9417); - -module.exports = expandTop; - -var escSlash = '\0SLASH'+Math.random()+'\0'; -var escOpen = '\0OPEN'+Math.random()+'\0'; -var escClose = '\0CLOSE'+Math.random()+'\0'; -var escComma = '\0COMMA'+Math.random()+'\0'; -var escPeriod = '\0PERIOD'+Math.random()+'\0'; - -function numeric(str) { - return parseInt(str, 10) == str - ? parseInt(str, 10) - : str.charCodeAt(0); } - -function escapeBraces(str) { - return str.split('\\\\').join(escSlash) - .split('\\{').join(escOpen) - .split('\\}').join(escClose) - .split('\\,').join(escComma) - .split('\\.').join(escPeriod); +exports.TestTransport = TestTransport; +TestTransport.defaultHeaders = { + responseHeader: "test" +}; +TestTransport.defaultStatus = { + code: "OK", detail: "all good" +}; +TestTransport.defaultTrailers = { + responseTrailer: "test" +}; +function delay(ms, abort) { + return (v) => new Promise((resolve, reject) => { + if (abort === null || abort === void 0 ? void 0 : abort.aborted) { + reject(new rpc_error_1.RpcError("user cancel", "CANCELLED")); + } + else { + const id = setTimeout(() => resolve(v), ms); + if (abort) { + abort.addEventListener("abort", ev => { + clearTimeout(id); + reject(new rpc_error_1.RpcError("user cancel", "CANCELLED")); + }); + } + } + }); } - -function unescapeBraces(str) { - return str.split(escSlash).join('\\') - .split(escOpen).join('{') - .split(escClose).join('}') - .split(escComma).join(',') - .split(escPeriod).join('.'); +class TestInputStream { + constructor(data, abort) { + this._completed = false; + this._sent = []; + this.data = data; + this.abort = abort; + } + get sent() { + return this._sent; + } + get completed() { + return this._completed; + } + send(message) { + if (this.data.inputMessage instanceof rpc_error_1.RpcError) { + return Promise.reject(this.data.inputMessage); + } + const delayMs = this.data.inputMessage === undefined + ? 10 + : this.data.inputMessage; + return Promise.resolve(undefined) + .then(() => { + this._sent.push(message); + }) + .then(delay(delayMs, this.abort)); + } + complete() { + if (this.data.inputComplete instanceof rpc_error_1.RpcError) { + return Promise.reject(this.data.inputComplete); + } + const delayMs = this.data.inputComplete === undefined + ? 10 + : this.data.inputComplete; + return Promise.resolve(undefined) + .then(() => { + this._completed = true; + }) + .then(delay(delayMs, this.abort)); + } } -// Basically just str.split(","), but handling cases -// where we have nested braced sections, which should be -// treated as individual members, like {a,{b,c},d} -function parseCommaParts(str) { - if (!str) - return ['']; - - var parts = []; - var m = balanced('{', '}', str); - - if (!m) - return str.split(','); - - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(','); +/***/ }), - p[p.length-1] += '{' + body + '}'; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length-1] += postParts.shift(); - p.push.apply(p, postParts); - } +/***/ 164: +/***/ (function(__unused_webpack_module, exports) { - parts.push.apply(parts, p); +"use strict"; - return parts; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UnaryCall = void 0; +/** + * A unary RPC call. Unary means there is exactly one input message and + * exactly one output message unless an error occurred. + */ +class UnaryCall { + constructor(method, requestHeaders, request, headers, response, status, trailers) { + this.method = method; + this.requestHeaders = requestHeaders; + this.request = request; + this.headers = headers; + this.response = response; + this.status = status; + this.trailers = trailers; + } + /** + * If you are only interested in the final outcome of this call, + * you can await it to receive a `FinishedUnaryCall`. + */ + then(onfulfilled, onrejected) { + return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason)); + } + promiseFinished() { + return __awaiter(this, void 0, void 0, function* () { + let [headers, response, status, trailers] = yield Promise.all([this.headers, this.response, this.status, this.trailers]); + return { + method: this.method, + requestHeaders: this.requestHeaders, + request: this.request, + headers, + response, + status, + trailers + }; + }); + } } +exports.UnaryCall = UnaryCall; -function expandTop(str) { - if (!str) - return []; - // I don't know why Bash 4.3 does this, but it does. - // Anything starting with {} will have the first two bytes preserved - // but *only* at the top level, so {},a}b will not expand to anything, - // but a{},b}c will be expanded to [a}c,abc]. - // One could argue that this is a bug in Bash, but since the goal of - // this module is to match Bash's rules, we escape a leading {} - if (str.substr(0, 2) === '{}') { - str = '\\{\\}' + str.substr(2); - } +/***/ }), - return expand(escapeBraces(str), true).map(unescapeBraces); -} +/***/ 4253: +/***/ ((__unused_webpack_module, exports) => { -function identity(e) { - return e; -} +"use strict"; -function embrace(str) { - return '{' + str + '}'; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.assertFloat32 = exports.assertUInt32 = exports.assertInt32 = exports.assertNever = exports.assert = void 0; +/** + * assert that condition is true or throw error (with message) + */ +function assert(condition, msg) { + if (!condition) { + throw new Error(msg); + } } -function isPadded(el) { - return /^-?0\d/.test(el); +exports.assert = assert; +/** + * assert that value cannot exist = type `never`. throw runtime error if it does. + */ +function assertNever(value, msg) { + throw new Error(msg !== null && msg !== void 0 ? msg : 'Unexpected object: ' + value); } - -function lte(i, y) { - return i <= y; +exports.assertNever = assertNever; +const FLOAT32_MAX = 3.4028234663852886e+38, FLOAT32_MIN = -3.4028234663852886e+38, UINT32_MAX = 0xFFFFFFFF, INT32_MAX = 0X7FFFFFFF, INT32_MIN = -0X80000000; +function assertInt32(arg) { + if (typeof arg !== "number") + throw new Error('invalid int 32: ' + typeof arg); + if (!Number.isInteger(arg) || arg > INT32_MAX || arg < INT32_MIN) + throw new Error('invalid int 32: ' + arg); } -function gte(i, y) { - return i >= y; +exports.assertInt32 = assertInt32; +function assertUInt32(arg) { + if (typeof arg !== "number") + throw new Error('invalid uint 32: ' + typeof arg); + if (!Number.isInteger(arg) || arg > UINT32_MAX || arg < 0) + throw new Error('invalid uint 32: ' + arg); } +exports.assertUInt32 = assertUInt32; +function assertFloat32(arg) { + if (typeof arg !== "number") + throw new Error('invalid float 32: ' + typeof arg); + if (!Number.isFinite(arg)) + return; + if (arg > FLOAT32_MAX || arg < FLOAT32_MIN) + throw new Error('invalid float 32: ' + arg); +} +exports.assertFloat32 = assertFloat32; -function expand(str, isTop) { - var expansions = []; - - var m = balanced('{', '}', str); - if (!m || /\$$/.test(m.pre)) return [str]; - - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(',') >= 0; - if (!isSequence && !isOptions) { - // {a},b} - if (m.post.match(/,.*\}/)) { - str = m.pre + '{' + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - // x{{a,b}}y ==> x{a}y x{b}y - n = expand(n[0], false).map(embrace); - if (n.length === 1) { - var post = m.post.length - ? expand(m.post, false) - : ['']; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - // at this point, n is the parts, and we know it's not a comma set - // with a single entry. +/***/ }), - // no need to expand pre, since it is guaranteed to be free of brace-sets - var pre = m.pre; - var post = m.post.length - ? expand(m.post, false) - : ['']; +/***/ 196: +/***/ ((__unused_webpack_module, exports) => { - var N; +"use strict"; - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length) - var incr = n.length == 3 - ? Math.abs(numeric(n[2])) - : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.base64encode = exports.base64decode = void 0; +// lookup table from base64 character to byte +let encTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); +// lookup table from base64 character *code* to byte because lookup by number is fast +let decTable = []; +for (let i = 0; i < encTable.length; i++) + decTable[encTable[i].charCodeAt(0)] = i; +// support base64url variants +decTable["-".charCodeAt(0)] = encTable.indexOf("+"); +decTable["_".charCodeAt(0)] = encTable.indexOf("/"); +/** + * Decodes a base64 string to a byte array. + * + * - ignores white-space, including line breaks and tabs + * - allows inner padding (can decode concatenated base64 strings) + * - does not require padding + * - understands base64url encoding: + * "-" instead of "+", + * "_" instead of "/", + * no padding + */ +function base64decode(base64Str) { + // estimate byte size, not accounting for inner padding and whitespace + let es = base64Str.length * 3 / 4; + // if (es % 3 !== 0) + // throw new Error('invalid base64 string'); + if (base64Str[base64Str.length - 2] == '=') + es -= 2; + else if (base64Str[base64Str.length - 1] == '=') + es -= 1; + let bytes = new Uint8Array(es), bytePos = 0, // position in byte array + groupPos = 0, // position in base64 group + b, // current byte + p = 0 // previous byte + ; + for (let i = 0; i < base64Str.length; i++) { + b = decTable[base64Str.charCodeAt(i)]; + if (b === undefined) { + // noinspection FallThroughInSwitchStatementJS + switch (base64Str[i]) { + case '=': + groupPos = 0; // reset state when padding found + case '\n': + case '\r': + case '\t': + case ' ': + continue; // skip white-space, and padding + default: + throw Error(`invalid base64 string.`); + } + } + switch (groupPos) { + case 0: + p = b; + groupPos = 1; + break; + case 1: + bytes[bytePos++] = p << 2 | (b & 48) >> 4; + p = b; + groupPos = 2; + break; + case 2: + bytes[bytePos++] = (p & 15) << 4 | (b & 60) >> 2; + p = b; + groupPos = 3; + break; + case 3: + bytes[bytePos++] = (p & 3) << 6 | b; + groupPos = 0; + break; + } } - var pad = n.some(isPadded); - - N = []; - - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === '\\') - c = ''; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join('0'); - if (i < 0) - c = '-' + z + c.slice(1); - else - c = z + c; - } + if (groupPos == 1) + throw Error(`invalid base64 string.`); + return bytes.subarray(0, bytePos); +} +exports.base64decode = base64decode; +/** + * Encodes a byte array to a base64 string. + * Adds padding at the end. + * Does not insert newlines. + */ +function base64encode(bytes) { + let base64 = '', groupPos = 0, // position in base64 group + b, // current byte + p = 0; // carry over from previous byte + for (let i = 0; i < bytes.length; i++) { + b = bytes[i]; + switch (groupPos) { + case 0: + base64 += encTable[b >> 2]; + p = (b & 3) << 4; + groupPos = 1; + break; + case 1: + base64 += encTable[p | b >> 4]; + p = (b & 15) << 2; + groupPos = 2; + break; + case 2: + base64 += encTable[p | b >> 6]; + base64 += encTable[b & 63]; + groupPos = 0; + break; } - } - N.push(c); } - } else { - N = concatMap(n, function(el) { return expand(el, false) }); - } - - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - var expansion = pre + N[j] + post[k]; - if (!isTop || isSequence || expansion) - expansions.push(expansion); + // padding required? + if (groupPos) { + base64 += encTable[p]; + base64 += '='; + if (groupPos == 1) + base64 += '='; } - } - - return expansions; + return base64; } - +exports.base64encode = base64encode; /***/ }), -/***/ 5443: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 4921: +/***/ ((__unused_webpack_module, exports) => { -var util = __nccwpck_require__(3837); -var Stream = (__nccwpck_require__(2781).Stream); -var DelayedStream = __nccwpck_require__(8611); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; +"use strict"; - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.WireType = exports.mergeBinaryOptions = exports.UnknownFieldHandler = void 0; +/** + * This handler implements the default behaviour for unknown fields. + * When reading data, unknown fields are stored on the message, in a + * symbol property. + * When writing data, the symbol property is queried and unknown fields + * are serialized into the output again. + */ +var UnknownFieldHandler; +(function (UnknownFieldHandler) { + /** + * The symbol used to store unknown fields for a message. + * The property must conform to `UnknownFieldContainer`. + */ + UnknownFieldHandler.symbol = Symbol.for("protobuf-ts/unknown"); + /** + * Store an unknown field during binary read directly on the message. + * This method is compatible with `BinaryReadOptions.readUnknownField`. + */ + UnknownFieldHandler.onRead = (typeName, message, fieldNo, wireType, data) => { + let container = is(message) ? message[UnknownFieldHandler.symbol] : message[UnknownFieldHandler.symbol] = []; + container.push({ no: fieldNo, wireType, data }); + }; + /** + * Write unknown fields stored for the message to the writer. + * This method is compatible with `BinaryWriteOptions.writeUnknownFields`. + */ + UnknownFieldHandler.onWrite = (typeName, message, writer) => { + for (let { no, wireType, data } of UnknownFieldHandler.list(message)) + writer.tag(no, wireType).raw(data); + }; + /** + * List unknown fields stored for the message. + * Note that there may be multiples fields with the same number. + */ + UnknownFieldHandler.list = (message, fieldNo) => { + if (is(message)) { + let all = message[UnknownFieldHandler.symbol]; + return fieldNo ? all.filter(uf => uf.no == fieldNo) : all; + } + return []; + }; + /** + * Returns the last unknown field by field number. + */ + UnknownFieldHandler.last = (message, fieldNo) => UnknownFieldHandler.list(message, fieldNo).slice(-1)[0]; + const is = (message) => message && Array.isArray(message[UnknownFieldHandler.symbol]); +})(UnknownFieldHandler = exports.UnknownFieldHandler || (exports.UnknownFieldHandler = {})); +/** + * Merges binary write or read options. Later values override earlier values. + */ +function mergeBinaryOptions(a, b) { + return Object.assign(Object.assign({}, a), b); } -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); +exports.mergeBinaryOptions = mergeBinaryOptions; +/** + * Protobuf binary format wire types. + * + * A wire type provides just enough information to find the length of the + * following value. + * + * See https://developers.google.com/protocol-buffers/docs/encoding#structure + */ +var WireType; +(function (WireType) { + /** + * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum + */ + WireType[WireType["Varint"] = 0] = "Varint"; + /** + * Used for fixed64, sfixed64, double. + * Always 8 bytes with little-endian byte order. + */ + WireType[WireType["Bit64"] = 1] = "Bit64"; + /** + * Used for string, bytes, embedded messages, packed repeated fields + * + * Only repeated numeric types (types which use the varint, 32-bit, + * or 64-bit wire types) can be packed. In proto3, such fields are + * packed by default. + */ + WireType[WireType["LengthDelimited"] = 2] = "LengthDelimited"; + /** + * Used for groups + * @deprecated + */ + WireType[WireType["StartGroup"] = 3] = "StartGroup"; + /** + * Used for groups + * @deprecated + */ + WireType[WireType["EndGroup"] = 4] = "EndGroup"; + /** + * Used for fixed32, sfixed32, float. + * Always 4 bytes with little-endian byte order. + */ + WireType[WireType["Bit32"] = 5] = "Bit32"; +})(WireType = exports.WireType || (exports.WireType = {})); - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - return combinedStream; -}; +/***/ }), -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; +/***/ 5210: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); +"use strict"; - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.BinaryReader = exports.binaryReadOptions = void 0; +const binary_format_contract_1 = __nccwpck_require__(4921); +const pb_long_1 = __nccwpck_require__(7777); +const goog_varint_1 = __nccwpck_require__(433); +const defaultsRead = { + readUnknownField: true, + readerFactory: bytes => new BinaryReader(bytes), +}; +/** + * Make options for reading binary data form partial options. + */ +function binaryReadOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead; +} +exports.binaryReadOptions = binaryReadOptions; +class BinaryReader { + constructor(buf, textDecoder) { + this.varint64 = goog_varint_1.varint64read; // dirty cast for `this` + /** + * Read a `uint32` field, an unsigned 32 bit varint. + */ + this.uint32 = goog_varint_1.varint32read; // dirty cast for `this` and access to protected `buf` + this.buf = buf; + this.len = buf.length; + this.pos = 0; + this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength); + this.textDecoder = textDecoder !== null && textDecoder !== void 0 ? textDecoder : new TextDecoder("utf-8", { + fatal: true, + ignoreBOM: true, + }); } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); + /** + * Reads a tag - field number and wire type. + */ + tag() { + let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7; + if (fieldNo <= 0 || wireType < 0 || wireType > 5) + throw new Error("illegal tag: field no " + fieldNo + " wire type " + wireType); + return [fieldNo, wireType]; } - } + /** + * Skip one element on the wire and return the skipped data. + * Supports WireType.StartGroup since v2.0.0-alpha.23. + */ + skip(wireType) { + let start = this.pos; + // noinspection FallThroughInSwitchStatementJS + switch (wireType) { + case binary_format_contract_1.WireType.Varint: + while (this.buf[this.pos++] & 0x80) { + // ignore + } + break; + case binary_format_contract_1.WireType.Bit64: + this.pos += 4; + case binary_format_contract_1.WireType.Bit32: + this.pos += 4; + break; + case binary_format_contract_1.WireType.LengthDelimited: + let len = this.uint32(); + this.pos += len; + break; + case binary_format_contract_1.WireType.StartGroup: + // From descriptor.proto: Group type is deprecated, not supported in proto3. + // But we must still be able to parse and treat as unknown. + let t; + while ((t = this.tag()[1]) !== binary_format_contract_1.WireType.EndGroup) { + this.skip(t); + } + break; + default: + throw new Error("cant skip wire type " + wireType); + } + this.assertBounds(); + return this.buf.subarray(start, this.pos); + } + /** + * Throws error if position in byte array is out of range. + */ + assertBounds() { + if (this.pos > this.len) + throw new RangeError("premature EOF"); + } + /** + * Read a `int32` field, a signed 32 bit varint. + */ + int32() { + return this.uint32() | 0; + } + /** + * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint. + */ + sint32() { + let zze = this.uint32(); + // decode zigzag + return (zze >>> 1) ^ -(zze & 1); + } + /** + * Read a `int64` field, a signed 64-bit varint. + */ + int64() { + return new pb_long_1.PbLong(...this.varint64()); + } + /** + * Read a `uint64` field, an unsigned 64-bit varint. + */ + uint64() { + return new pb_long_1.PbULong(...this.varint64()); + } + /** + * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint. + */ + sint64() { + let [lo, hi] = this.varint64(); + // decode zig zag + let s = -(lo & 1); + lo = ((lo >>> 1 | (hi & 1) << 31) ^ s); + hi = (hi >>> 1 ^ s); + return new pb_long_1.PbLong(lo, hi); + } + /** + * Read a `bool` field, a variant. + */ + bool() { + let [lo, hi] = this.varint64(); + return lo !== 0 || hi !== 0; + } + /** + * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer. + */ + fixed32() { + return this.view.getUint32((this.pos += 4) - 4, true); + } + /** + * Read a `sfixed32` field, a signed, fixed-length 32-bit integer. + */ + sfixed32() { + return this.view.getInt32((this.pos += 4) - 4, true); + } + /** + * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer. + */ + fixed64() { + return new pb_long_1.PbULong(this.sfixed32(), this.sfixed32()); + } + /** + * Read a `fixed64` field, a signed, fixed-length 64-bit integer. + */ + sfixed64() { + return new pb_long_1.PbLong(this.sfixed32(), this.sfixed32()); + } + /** + * Read a `float` field, 32-bit floating point number. + */ + float() { + return this.view.getFloat32((this.pos += 4) - 4, true); + } + /** + * Read a `double` field, a 64-bit floating point number. + */ + double() { + return this.view.getFloat64((this.pos += 8) - 8, true); + } + /** + * Read a `bytes` field, length-delimited arbitrary data. + */ + bytes() { + let len = this.uint32(); + let start = this.pos; + this.pos += len; + this.assertBounds(); + return this.buf.subarray(start, start + len); + } + /** + * Read a `string` field, length-delimited data converted to UTF-8 text. + */ + string() { + return this.textDecoder.decode(this.bytes()); + } +} +exports.BinaryReader = BinaryReader; - this._streams.push(stream); - return this; -}; -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; +/***/ }), -CombinedStream.prototype._getNext = function() { - this._currentStream = null; +/***/ 4354: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } +"use strict"; - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.BinaryWriter = exports.binaryWriteOptions = void 0; +const pb_long_1 = __nccwpck_require__(7777); +const goog_varint_1 = __nccwpck_require__(433); +const assert_1 = __nccwpck_require__(4253); +const defaultsWrite = { + writeUnknownFields: true, + writerFactory: () => new BinaryWriter(), }; +/** + * Make options for writing binary data form partial options. + */ +function binaryWriteOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite; +} +exports.binaryWriteOptions = binaryWriteOptions; +class BinaryWriter { + constructor(textEncoder) { + /** + * Previous fork states. + */ + this.stack = []; + this.textEncoder = textEncoder !== null && textEncoder !== void 0 ? textEncoder : new TextEncoder(); + this.chunks = []; + this.buf = []; + } + /** + * Return all bytes written and reset this writer. + */ + finish() { + this.chunks.push(new Uint8Array(this.buf)); // flush the buffer + let len = 0; + for (let i = 0; i < this.chunks.length; i++) + len += this.chunks[i].length; + let bytes = new Uint8Array(len); + let offset = 0; + for (let i = 0; i < this.chunks.length; i++) { + bytes.set(this.chunks[i], offset); + offset += this.chunks[i].length; + } + this.chunks = []; + return bytes; + } + /** + * Start a new fork for length-delimited data like a message + * or a packed repeated field. + * + * Must be joined later with `join()`. + */ + fork() { + this.stack.push({ chunks: this.chunks, buf: this.buf }); + this.chunks = []; + this.buf = []; + return this; + } + /** + * Join the last fork. Write its length and bytes, then + * return to the previous state. + */ + join() { + // get chunk of fork + let chunk = this.finish(); + // restore previous state + let prev = this.stack.pop(); + if (!prev) + throw new Error('invalid state, fork stack empty'); + this.chunks = prev.chunks; + this.buf = prev.buf; + // write length of chunk as varint + this.uint32(chunk.byteLength); + return this.raw(chunk); + } + /** + * Writes a tag (field number and wire type). + * + * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`. + * + * Generated code should compute the tag ahead of time and call `uint32()`. + */ + tag(fieldNo, type) { + return this.uint32((fieldNo << 3 | type) >>> 0); + } + /** + * Write a chunk of raw bytes. + */ + raw(chunk) { + if (this.buf.length) { + this.chunks.push(new Uint8Array(this.buf)); + this.buf = []; + } + this.chunks.push(chunk); + return this; + } + /** + * Write a `uint32` value, an unsigned 32 bit varint. + */ + uint32(value) { + assert_1.assertUInt32(value); + // write value as varint 32, inlined for speed + while (value > 0x7f) { + this.buf.push((value & 0x7f) | 0x80); + value = value >>> 7; + } + this.buf.push(value); + return this; + } + /** + * Write a `int32` value, a signed 32 bit varint. + */ + int32(value) { + assert_1.assertInt32(value); + goog_varint_1.varint32write(value, this.buf); + return this; + } + /** + * Write a `bool` value, a variant. + */ + bool(value) { + this.buf.push(value ? 1 : 0); + return this; + } + /** + * Write a `bytes` value, length-delimited arbitrary data. + */ + bytes(value) { + this.uint32(value.byteLength); // write length of chunk as varint + return this.raw(value); + } + /** + * Write a `string` value, length-delimited data converted to UTF-8 text. + */ + string(value) { + let chunk = this.textEncoder.encode(value); + this.uint32(chunk.byteLength); // write length of chunk as varint + return this.raw(chunk); + } + /** + * Write a `float` value, 32-bit floating point number. + */ + float(value) { + assert_1.assertFloat32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setFloat32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `double` value, a 64-bit floating point number. + */ + double(value) { + let chunk = new Uint8Array(8); + new DataView(chunk.buffer).setFloat64(0, value, true); + return this.raw(chunk); + } + /** + * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer. + */ + fixed32(value) { + assert_1.assertUInt32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setUint32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `sfixed32` value, a signed, fixed-length 32-bit integer. + */ + sfixed32(value) { + assert_1.assertInt32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setInt32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint. + */ + sint32(value) { + assert_1.assertInt32(value); + // zigzag encode + value = ((value << 1) ^ (value >> 31)) >>> 0; + goog_varint_1.varint32write(value, this.buf); + return this; + } + /** + * Write a `fixed64` value, a signed, fixed-length 64-bit integer. + */ + sfixed64(value) { + let chunk = new Uint8Array(8); + let view = new DataView(chunk.buffer); + let long = pb_long_1.PbLong.from(value); + view.setInt32(0, long.lo, true); + view.setInt32(4, long.hi, true); + return this.raw(chunk); + } + /** + * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer. + */ + fixed64(value) { + let chunk = new Uint8Array(8); + let view = new DataView(chunk.buffer); + let long = pb_long_1.PbULong.from(value); + view.setInt32(0, long.lo, true); + view.setInt32(4, long.hi, true); + return this.raw(chunk); + } + /** + * Write a `int64` value, a signed 64-bit varint. + */ + int64(value) { + let long = pb_long_1.PbLong.from(value); + goog_varint_1.varint64write(long.lo, long.hi, this.buf); + return this; + } + /** + * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint. + */ + sint64(value) { + let long = pb_long_1.PbLong.from(value), + // zigzag encode + sign = long.hi >> 31, lo = (long.lo << 1) ^ sign, hi = ((long.hi << 1) | (long.lo >>> 31)) ^ sign; + goog_varint_1.varint64write(lo, hi, this.buf); + return this; + } + /** + * Write a `uint64` value, an unsigned 64-bit varint. + */ + uint64(value) { + let long = pb_long_1.PbULong.from(value); + goog_varint_1.varint64write(long.lo, long.hi, this.buf); + return this; + } +} +exports.BinaryWriter = BinaryWriter; -CombinedStream.prototype._realGetNext = function() { - var stream = this._streams.shift(); +/***/ }), - if (typeof stream == 'undefined') { - this.end(); - return; - } +/***/ 85: +/***/ ((__unused_webpack_module, exports) => { - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } +"use strict"; - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.listEnumNumbers = exports.listEnumNames = exports.listEnumValues = exports.isEnumObject = void 0; +/** + * Is this a lookup object generated by Typescript, for a Typescript enum + * generated by protobuf-ts? + * + * - No `const enum` (enum must not be inlined, we need reverse mapping). + * - No string enum (we need int32 for protobuf). + * - Must have a value for 0 (otherwise, we would need to support custom default values). + */ +function isEnumObject(arg) { + if (typeof arg != 'object' || arg === null) { + return false; + } + if (!arg.hasOwnProperty(0)) { + return false; + } + for (let k of Object.keys(arg)) { + let num = parseInt(k); + if (!Number.isNaN(num)) { + // is there a name for the number? + let nam = arg[num]; + if (nam === undefined) + return false; + // does the name resolve back to the number? + if (arg[nam] !== num) + return false; + } + else { + // is there a number for the name? + let num = arg[k]; + if (num === undefined) + return false; + // is it a string enum? + if (typeof num !== 'number') + return false; + // do we know the number? + if (arg[num] === undefined) + return false; + } } + return true; +} +exports.isEnumObject = isEnumObject; +/** + * Lists all values of a Typescript enum, as an array of objects with a "name" + * property and a "number" property. + * + * Note that it is possible that a number appears more than once, because it is + * possible to have aliases in an enum. + * + * Throws if the enum does not adhere to the rules of enums generated by + * protobuf-ts. See `isEnumObject()`. + */ +function listEnumValues(enumObject) { + if (!isEnumObject(enumObject)) + throw new Error("not a typescript enum object"); + let values = []; + for (let [name, number] of Object.entries(enumObject)) + if (typeof number == "number") + values.push({ name, number }); + return values; +} +exports.listEnumValues = listEnumValues; +/** + * Lists the names of a Typescript enum. + * + * Throws if the enum does not adhere to the rules of enums generated by + * protobuf-ts. See `isEnumObject()`. + */ +function listEnumNames(enumObject) { + return listEnumValues(enumObject).map(val => val.name); +} +exports.listEnumNames = listEnumNames; +/** + * Lists the numbers of a Typescript enum. + * + * Throws if the enum does not adhere to the rules of enums generated by + * protobuf-ts. See `isEnumObject()`. + */ +function listEnumNumbers(enumObject) { + return listEnumValues(enumObject) + .map(val => val.number) + .filter((num, index, arr) => arr.indexOf(num) == index); +} +exports.listEnumNumbers = listEnumNumbers; - this._pipeNext(stream); - }.bind(this)); -}; -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; +/***/ }), - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } +/***/ 433: +/***/ ((__unused_webpack_module, exports) => { - var value = stream; - this.write(value); - this._getNext(); -}; +"use strict"; -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; +// Copyright 2008 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Code generated by the Protocol Buffer compiler is owned by the owner +// of the input file used when generating it. This code is not +// standalone and requires a support library to be linked with it. This +// support library is itself covered by the above license. +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.varint32read = exports.varint32write = exports.int64toString = exports.int64fromString = exports.varint64write = exports.varint64read = void 0; +/** + * Read a 64 bit varint as two JS numbers. + * + * Returns tuple: + * [0]: low bits + * [0]: high bits + * + * Copyright 2008 Google Inc. All rights reserved. + * + * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175 + */ +function varint64read() { + let lowBits = 0; + let highBits = 0; + for (let shift = 0; shift < 28; shift += 7) { + let b = this.buf[this.pos++]; + lowBits |= (b & 0x7F) << shift; + if ((b & 0x80) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + } + let middleByte = this.buf[this.pos++]; + // last four bits of the first 32 bit number + lowBits |= (middleByte & 0x0F) << 28; + // 3 upper bits are part of the next 32 bit number + highBits = (middleByte & 0x70) >> 4; + if ((middleByte & 0x80) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + for (let shift = 3; shift <= 31; shift += 7) { + let b = this.buf[this.pos++]; + highBits |= (b & 0x7F) << shift; + if ((b & 0x80) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + } + throw new Error('invalid varint'); +} +exports.varint64read = varint64read; +/** + * Write a 64 bit varint, given as two JS numbers, to the given bytes array. + * + * Copyright 2008 Google Inc. All rights reserved. + * + * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344 + */ +function varint64write(lo, hi, bytes) { + for (let i = 0; i < 28; i = i + 7) { + const shift = lo >>> i; + const hasNext = !((shift >>> 7) == 0 && hi == 0); + const byte = (hasNext ? shift | 0x80 : shift) & 0xFF; + bytes.push(byte); + if (!hasNext) { + return; + } + } + const splitBits = ((lo >>> 28) & 0x0F) | ((hi & 0x07) << 4); + const hasMoreBits = !((hi >> 3) == 0); + bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xFF); + if (!hasMoreBits) { + return; + } + for (let i = 3; i < 31; i = i + 7) { + const shift = hi >>> i; + const hasNext = !((shift >>> 7) == 0); + const byte = (hasNext ? shift | 0x80 : shift) & 0xFF; + bytes.push(byte); + if (!hasNext) { + return; + } + } + bytes.push((hi >>> 31) & 0x01); +} +exports.varint64write = varint64write; +// constants for binary math +const TWO_PWR_32_DBL = (1 << 16) * (1 << 16); +/** + * Parse decimal string of 64 bit integer value as two JS numbers. + * + * Returns tuple: + * [0]: minus sign? + * [1]: low bits + * [2]: high bits + * + * Copyright 2008 Google Inc. + */ +function int64fromString(dec) { + // Check for minus sign. + let minus = dec[0] == '-'; + if (minus) + dec = dec.slice(1); + // Work 6 decimal digits at a time, acting like we're converting base 1e6 + // digits to binary. This is safe to do with floating point math because + // Number.isSafeInteger(ALL_32_BITS * 1e6) == true. + const base = 1e6; + let lowBits = 0; + let highBits = 0; + function add1e6digit(begin, end) { + // Note: Number('') is 0. + const digit1e6 = Number(dec.slice(begin, end)); + highBits *= base; + lowBits = lowBits * base + digit1e6; + // Carry bits from lowBits to highBits + if (lowBits >= TWO_PWR_32_DBL) { + highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0); + lowBits = lowBits % TWO_PWR_32_DBL; + } + } + add1e6digit(-24, -18); + add1e6digit(-18, -12); + add1e6digit(-12, -6); + add1e6digit(-6); + return [minus, lowBits, highBits]; +} +exports.int64fromString = int64fromString; +/** + * Format 64 bit integer value (as two JS numbers) to decimal string. + * + * Copyright 2008 Google Inc. + */ +function int64toString(bitsLow, bitsHigh) { + // Skip the expensive conversion if the number is small enough to use the + // built-in conversions. + if ((bitsHigh >>> 0) <= 0x1FFFFF) { + return '' + (TWO_PWR_32_DBL * bitsHigh + (bitsLow >>> 0)); + } + // What this code is doing is essentially converting the input number from + // base-2 to base-1e7, which allows us to represent the 64-bit range with + // only 3 (very large) digits. Those digits are then trivial to convert to + // a base-10 string. + // The magic numbers used here are - + // 2^24 = 16777216 = (1,6777216) in base-1e7. + // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7. + // Split 32:32 representation into 16:24:24 representation so our + // intermediate digits don't overflow. + let low = bitsLow & 0xFFFFFF; + let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xFFFFFF; + let high = (bitsHigh >> 16) & 0xFFFF; + // Assemble our three base-1e7 digits, ignoring carries. The maximum + // value in a digit at this step is representable as a 48-bit integer, which + // can be stored in a 64-bit floating point number. + let digitA = low + (mid * 6777216) + (high * 6710656); + let digitB = mid + (high * 8147497); + let digitC = (high * 2); + // Apply carries from A to B and from B to C. + let base = 10000000; + if (digitA >= base) { + digitB += Math.floor(digitA / base); + digitA %= base; + } + if (digitB >= base) { + digitC += Math.floor(digitB / base); + digitB %= base; + } + // Convert base-1e7 digits to base-10, with optional leading zeroes. + function decimalFrom1e7(digit1e7, needLeadingZeros) { + let partial = digit1e7 ? String(digit1e7) : ''; + if (needLeadingZeros) { + return '0000000'.slice(partial.length) + partial; + } + return partial; + } + return decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) + + decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) + + // If the final 1e7 digit didn't need leading zeros, we would have + // returned via the trivial code path at the top. + decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1); +} +exports.int64toString = int64toString; +/** + * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)` + * + * Copyright 2008 Google Inc. All rights reserved. + * + * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144 + */ +function varint32write(value, bytes) { + if (value >= 0) { + // write value as varint 32 + while (value > 0x7f) { + bytes.push((value & 0x7f) | 0x80); + value = value >>> 7; + } + bytes.push(value); + } + else { + for (let i = 0; i < 9; i++) { + bytes.push(value & 127 | 128); + value = value >> 7; + } + bytes.push(1); + } +} +exports.varint32write = varint32write; +/** + * Read an unsigned 32 bit varint. + * + * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220 + */ +function varint32read() { + let b = this.buf[this.pos++]; + let result = b & 0x7F; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 0x7F) << 7; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 0x7F) << 14; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 0x7F) << 21; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + // Extract only last 4 bits + b = this.buf[this.pos++]; + result |= (b & 0x0F) << 28; + for (let readBytes = 5; ((b & 0x80) !== 0) && readBytes < 10; readBytes++) + b = this.buf[this.pos++]; + if ((b & 0x80) != 0) + throw new Error('invalid varint'); + this.assertBounds(); + // Result can have 32 bits, convert it to unsigned + return result >>> 0; +} +exports.varint32read = varint32read; -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } +/***/ }), - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; +/***/ 4061: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } +"use strict"; - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; +// Public API of the protobuf-ts runtime. +// Note: we do not use `export * from ...` to help tree shakers, +// webpack verbose output hints that this should be useful +Object.defineProperty(exports, "__esModule", ({ value: true })); +// Convenience JSON typings and corresponding type guards +var json_typings_1 = __nccwpck_require__(661); +Object.defineProperty(exports, "typeofJsonValue", ({ enumerable: true, get: function () { return json_typings_1.typeofJsonValue; } })); +Object.defineProperty(exports, "isJsonObject", ({ enumerable: true, get: function () { return json_typings_1.isJsonObject; } })); +// Base 64 encoding +var base64_1 = __nccwpck_require__(196); +Object.defineProperty(exports, "base64decode", ({ enumerable: true, get: function () { return base64_1.base64decode; } })); +Object.defineProperty(exports, "base64encode", ({ enumerable: true, get: function () { return base64_1.base64encode; } })); +// UTF8 encoding +var protobufjs_utf8_1 = __nccwpck_require__(5290); +Object.defineProperty(exports, "utf8read", ({ enumerable: true, get: function () { return protobufjs_utf8_1.utf8read; } })); +// Binary format contracts, options for reading and writing, for example +var binary_format_contract_1 = __nccwpck_require__(4921); +Object.defineProperty(exports, "WireType", ({ enumerable: true, get: function () { return binary_format_contract_1.WireType; } })); +Object.defineProperty(exports, "mergeBinaryOptions", ({ enumerable: true, get: function () { return binary_format_contract_1.mergeBinaryOptions; } })); +Object.defineProperty(exports, "UnknownFieldHandler", ({ enumerable: true, get: function () { return binary_format_contract_1.UnknownFieldHandler; } })); +// Standard IBinaryReader implementation +var binary_reader_1 = __nccwpck_require__(5210); +Object.defineProperty(exports, "BinaryReader", ({ enumerable: true, get: function () { return binary_reader_1.BinaryReader; } })); +Object.defineProperty(exports, "binaryReadOptions", ({ enumerable: true, get: function () { return binary_reader_1.binaryReadOptions; } })); +// Standard IBinaryWriter implementation +var binary_writer_1 = __nccwpck_require__(4354); +Object.defineProperty(exports, "BinaryWriter", ({ enumerable: true, get: function () { return binary_writer_1.BinaryWriter; } })); +Object.defineProperty(exports, "binaryWriteOptions", ({ enumerable: true, get: function () { return binary_writer_1.binaryWriteOptions; } })); +// Int64 and UInt64 implementations required for the binary format +var pb_long_1 = __nccwpck_require__(7777); +Object.defineProperty(exports, "PbLong", ({ enumerable: true, get: function () { return pb_long_1.PbLong; } })); +Object.defineProperty(exports, "PbULong", ({ enumerable: true, get: function () { return pb_long_1.PbULong; } })); +// JSON format contracts, options for reading and writing, for example +var json_format_contract_1 = __nccwpck_require__(8139); +Object.defineProperty(exports, "jsonReadOptions", ({ enumerable: true, get: function () { return json_format_contract_1.jsonReadOptions; } })); +Object.defineProperty(exports, "jsonWriteOptions", ({ enumerable: true, get: function () { return json_format_contract_1.jsonWriteOptions; } })); +Object.defineProperty(exports, "mergeJsonOptions", ({ enumerable: true, get: function () { return json_format_contract_1.mergeJsonOptions; } })); +// Message type contract +var message_type_contract_1 = __nccwpck_require__(1682); +Object.defineProperty(exports, "MESSAGE_TYPE", ({ enumerable: true, get: function () { return message_type_contract_1.MESSAGE_TYPE; } })); +// Message type implementation via reflection +var message_type_1 = __nccwpck_require__(3664); +Object.defineProperty(exports, "MessageType", ({ enumerable: true, get: function () { return message_type_1.MessageType; } })); +// Reflection info, generated by the plugin, exposed to the user, used by reflection ops +var reflection_info_1 = __nccwpck_require__(1370); +Object.defineProperty(exports, "ScalarType", ({ enumerable: true, get: function () { return reflection_info_1.ScalarType; } })); +Object.defineProperty(exports, "LongType", ({ enumerable: true, get: function () { return reflection_info_1.LongType; } })); +Object.defineProperty(exports, "RepeatType", ({ enumerable: true, get: function () { return reflection_info_1.RepeatType; } })); +Object.defineProperty(exports, "normalizeFieldInfo", ({ enumerable: true, get: function () { return reflection_info_1.normalizeFieldInfo; } })); +Object.defineProperty(exports, "readFieldOptions", ({ enumerable: true, get: function () { return reflection_info_1.readFieldOptions; } })); +Object.defineProperty(exports, "readFieldOption", ({ enumerable: true, get: function () { return reflection_info_1.readFieldOption; } })); +Object.defineProperty(exports, "readMessageOption", ({ enumerable: true, get: function () { return reflection_info_1.readMessageOption; } })); +// Message operations via reflection +var reflection_type_check_1 = __nccwpck_require__(903); +Object.defineProperty(exports, "ReflectionTypeCheck", ({ enumerable: true, get: function () { return reflection_type_check_1.ReflectionTypeCheck; } })); +var reflection_create_1 = __nccwpck_require__(390); +Object.defineProperty(exports, "reflectionCreate", ({ enumerable: true, get: function () { return reflection_create_1.reflectionCreate; } })); +var reflection_scalar_default_1 = __nccwpck_require__(4863); +Object.defineProperty(exports, "reflectionScalarDefault", ({ enumerable: true, get: function () { return reflection_scalar_default_1.reflectionScalarDefault; } })); +var reflection_merge_partial_1 = __nccwpck_require__(7869); +Object.defineProperty(exports, "reflectionMergePartial", ({ enumerable: true, get: function () { return reflection_merge_partial_1.reflectionMergePartial; } })); +var reflection_equals_1 = __nccwpck_require__(9473); +Object.defineProperty(exports, "reflectionEquals", ({ enumerable: true, get: function () { return reflection_equals_1.reflectionEquals; } })); +var reflection_binary_reader_1 = __nccwpck_require__(1593); +Object.defineProperty(exports, "ReflectionBinaryReader", ({ enumerable: true, get: function () { return reflection_binary_reader_1.ReflectionBinaryReader; } })); +var reflection_binary_writer_1 = __nccwpck_require__(7170); +Object.defineProperty(exports, "ReflectionBinaryWriter", ({ enumerable: true, get: function () { return reflection_binary_writer_1.ReflectionBinaryWriter; } })); +var reflection_json_reader_1 = __nccwpck_require__(229); +Object.defineProperty(exports, "ReflectionJsonReader", ({ enumerable: true, get: function () { return reflection_json_reader_1.ReflectionJsonReader; } })); +var reflection_json_writer_1 = __nccwpck_require__(8980); +Object.defineProperty(exports, "ReflectionJsonWriter", ({ enumerable: true, get: function () { return reflection_json_writer_1.ReflectionJsonWriter; } })); +var reflection_contains_message_type_1 = __nccwpck_require__(7317); +Object.defineProperty(exports, "containsMessageType", ({ enumerable: true, get: function () { return reflection_contains_message_type_1.containsMessageType; } })); +// Oneof helpers +var oneof_1 = __nccwpck_require__(8531); +Object.defineProperty(exports, "isOneofGroup", ({ enumerable: true, get: function () { return oneof_1.isOneofGroup; } })); +Object.defineProperty(exports, "setOneofValue", ({ enumerable: true, get: function () { return oneof_1.setOneofValue; } })); +Object.defineProperty(exports, "getOneofValue", ({ enumerable: true, get: function () { return oneof_1.getOneofValue; } })); +Object.defineProperty(exports, "clearOneofValue", ({ enumerable: true, get: function () { return oneof_1.clearOneofValue; } })); +Object.defineProperty(exports, "getSelectedOneofValue", ({ enumerable: true, get: function () { return oneof_1.getSelectedOneofValue; } })); +// Enum object type guard and reflection util, may be interesting to the user. +var enum_object_1 = __nccwpck_require__(85); +Object.defineProperty(exports, "listEnumValues", ({ enumerable: true, get: function () { return enum_object_1.listEnumValues; } })); +Object.defineProperty(exports, "listEnumNames", ({ enumerable: true, get: function () { return enum_object_1.listEnumNames; } })); +Object.defineProperty(exports, "listEnumNumbers", ({ enumerable: true, get: function () { return enum_object_1.listEnumNumbers; } })); +Object.defineProperty(exports, "isEnumObject", ({ enumerable: true, get: function () { return enum_object_1.isEnumObject; } })); +// lowerCamelCase() is exported for plugin, rpc-runtime and other rpc packages +var lower_camel_case_1 = __nccwpck_require__(4772); +Object.defineProperty(exports, "lowerCamelCase", ({ enumerable: true, get: function () { return lower_camel_case_1.lowerCamelCase; } })); +// assertion functions are exported for plugin, may also be useful to user +var assert_1 = __nccwpck_require__(4253); +Object.defineProperty(exports, "assert", ({ enumerable: true, get: function () { return assert_1.assert; } })); +Object.defineProperty(exports, "assertNever", ({ enumerable: true, get: function () { return assert_1.assertNever; } })); +Object.defineProperty(exports, "assertInt32", ({ enumerable: true, get: function () { return assert_1.assertInt32; } })); +Object.defineProperty(exports, "assertUInt32", ({ enumerable: true, get: function () { return assert_1.assertUInt32; } })); +Object.defineProperty(exports, "assertFloat32", ({ enumerable: true, get: function () { return assert_1.assertFloat32; } })); -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; +/***/ }), -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; +/***/ 8139: +/***/ ((__unused_webpack_module, exports) => { -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } +"use strict"; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.mergeJsonOptions = exports.jsonWriteOptions = exports.jsonReadOptions = void 0; +const defaultsWrite = { + emitDefaultValues: false, + enumAsInteger: false, + useProtoFieldName: false, + prettySpaces: 0, +}, defaultsRead = { + ignoreUnknownFields: false, }; +/** + * Make options for reading JSON data from partial options. + */ +function jsonReadOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead; +} +exports.jsonReadOptions = jsonReadOptions; +/** + * Make options for writing JSON data from partial options. + */ +function jsonWriteOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite; +} +exports.jsonWriteOptions = jsonWriteOptions; +/** + * Merges JSON write or read options. Later values override earlier values. Type registries are merged. + */ +function mergeJsonOptions(a, b) { + var _a, _b; + let c = Object.assign(Object.assign({}, a), b); + c.typeRegistry = [...((_a = a === null || a === void 0 ? void 0 : a.typeRegistry) !== null && _a !== void 0 ? _a : []), ...((_b = b === null || b === void 0 ? void 0 : b.typeRegistry) !== null && _b !== void 0 ? _b : [])]; + return c; +} +exports.mergeJsonOptions = mergeJsonOptions; -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } +/***/ }), - self.dataSize += stream.dataSize; - }); +/***/ 661: +/***/ ((__unused_webpack_module, exports) => { - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; +"use strict"; -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isJsonObject = exports.typeofJsonValue = void 0; +/** + * Get the type of a JSON value. + * Distinguishes between array, null and object. + */ +function typeofJsonValue(value) { + let t = typeof value; + if (t == "object") { + if (Array.isArray(value)) + return "array"; + if (value === null) + return "null"; + } + return t; +} +exports.typeofJsonValue = typeofJsonValue; +/** + * Is this a JSON object (instead of an array or null)? + */ +function isJsonObject(value) { + return value !== null && typeof value == "object" && !Array.isArray(value); +} +exports.isJsonObject = isJsonObject; /***/ }), -/***/ 6891: -/***/ ((module) => { +/***/ 4772: +/***/ ((__unused_webpack_module, exports) => { -module.exports = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; +"use strict"; -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.lowerCamelCase = void 0; +/** + * Converts snake_case to lowerCamelCase. + * + * Should behave like protoc: + * https://github.com/protocolbuffers/protobuf/blob/e8ae137c96444ea313485ed1118c5e43b2099cf1/src/google/protobuf/compiler/java/java_helpers.cc#L118 + */ +function lowerCamelCase(snakeCase) { + let capNext = false; + const sb = []; + for (let i = 0; i < snakeCase.length; i++) { + let next = snakeCase.charAt(i); + if (next == '_') { + capNext = true; + } + else if (/\d/.test(next)) { + sb.push(next); + capNext = true; + } + else if (capNext) { + sb.push(next.toUpperCase()); + capNext = false; + } + else if (i == 0) { + sb.push(next.toLowerCase()); + } + else { + sb.push(next); + } + } + return sb.join(''); +} +exports.lowerCamelCase = lowerCamelCase; /***/ }), -/***/ 8611: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 1682: +/***/ ((__unused_webpack_module, exports) => { -var Stream = (__nccwpck_require__(2781).Stream); -var util = __nccwpck_require__(3837); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } +"use strict"; - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.MESSAGE_TYPE = void 0; +/** + * The symbol used as a key on message objects to store the message type. + * + * Note that this is an experimental feature - it is here to stay, but + * implementation details may change without notice. + */ +exports.MESSAGE_TYPE = Symbol.for("protobuf-ts/message-type"); /***/ }), -/***/ 7426: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 3664: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.MessageType = void 0; +const message_type_contract_1 = __nccwpck_require__(1682); +const reflection_info_1 = __nccwpck_require__(1370); +const reflection_type_check_1 = __nccwpck_require__(903); +const reflection_json_reader_1 = __nccwpck_require__(229); +const reflection_json_writer_1 = __nccwpck_require__(8980); +const reflection_binary_reader_1 = __nccwpck_require__(1593); +const reflection_binary_writer_1 = __nccwpck_require__(7170); +const reflection_create_1 = __nccwpck_require__(390); +const reflection_merge_partial_1 = __nccwpck_require__(7869); +const json_typings_1 = __nccwpck_require__(661); +const json_format_contract_1 = __nccwpck_require__(8139); +const reflection_equals_1 = __nccwpck_require__(9473); +const binary_writer_1 = __nccwpck_require__(4354); +const binary_reader_1 = __nccwpck_require__(5210); +const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({})); /** - * Module exports. + * This standard message type provides reflection-based + * operations to work with a message. */ - -module.exports = __nccwpck_require__(3765) +class MessageType { + constructor(name, fields, options) { + this.defaultCheckDepth = 16; + this.typeName = name; + this.fields = fields.map(reflection_info_1.normalizeFieldInfo); + this.options = options !== null && options !== void 0 ? options : {}; + this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [message_type_contract_1.MESSAGE_TYPE]: { value: this } })); + this.refTypeCheck = new reflection_type_check_1.ReflectionTypeCheck(this); + this.refJsonReader = new reflection_json_reader_1.ReflectionJsonReader(this); + this.refJsonWriter = new reflection_json_writer_1.ReflectionJsonWriter(this); + this.refBinReader = new reflection_binary_reader_1.ReflectionBinaryReader(this); + this.refBinWriter = new reflection_binary_writer_1.ReflectionBinaryWriter(this); + } + create(value) { + let message = reflection_create_1.reflectionCreate(this); + if (value !== undefined) { + reflection_merge_partial_1.reflectionMergePartial(this, message, value); + } + return message; + } + /** + * Clone the message. + * + * Unknown fields are discarded. + */ + clone(message) { + let copy = this.create(); + reflection_merge_partial_1.reflectionMergePartial(this, copy, message); + return copy; + } + /** + * Determines whether two message of the same type have the same field values. + * Checks for deep equality, traversing repeated fields, oneof groups, maps + * and messages recursively. + * Will also return true if both messages are `undefined`. + */ + equals(a, b) { + return reflection_equals_1.reflectionEquals(this, a, b); + } + /** + * Is the given value assignable to our message type + * and contains no [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)? + */ + is(arg, depth = this.defaultCheckDepth) { + return this.refTypeCheck.is(arg, depth, false); + } + /** + * Is the given value assignable to our message type, + * regardless of [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)? + */ + isAssignable(arg, depth = this.defaultCheckDepth) { + return this.refTypeCheck.is(arg, depth, true); + } + /** + * Copy partial data into the target message. + */ + mergePartial(target, source) { + reflection_merge_partial_1.reflectionMergePartial(this, target, source); + } + /** + * Create a new message from binary format. + */ + fromBinary(data, options) { + let opt = binary_reader_1.binaryReadOptions(options); + return this.internalBinaryRead(opt.readerFactory(data), data.byteLength, opt); + } + /** + * Read a new message from a JSON value. + */ + fromJson(json, options) { + return this.internalJsonRead(json, json_format_contract_1.jsonReadOptions(options)); + } + /** + * Read a new message from a JSON string. + * This is equivalent to `T.fromJson(JSON.parse(json))`. + */ + fromJsonString(json, options) { + let value = JSON.parse(json); + return this.fromJson(value, options); + } + /** + * Write the message to canonical JSON value. + */ + toJson(message, options) { + return this.internalJsonWrite(message, json_format_contract_1.jsonWriteOptions(options)); + } + /** + * Convert the message to canonical JSON string. + * This is equivalent to `JSON.stringify(T.toJson(t))` + */ + toJsonString(message, options) { + var _a; + let value = this.toJson(message, options); + return JSON.stringify(value, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0); + } + /** + * Write the message to binary format. + */ + toBinary(message, options) { + let opt = binary_writer_1.binaryWriteOptions(options); + return this.internalBinaryWrite(message, opt.writerFactory(), opt).finish(); + } + /** + * This is an internal method. If you just want to read a message from + * JSON, use `fromJson()` or `fromJsonString()`. + * + * Reads JSON value and merges the fields into the target + * according to protobuf rules. If the target is omitted, + * a new instance is created first. + */ + internalJsonRead(json, options, target) { + if (json !== null && typeof json == "object" && !Array.isArray(json)) { + let message = target !== null && target !== void 0 ? target : this.create(); + this.refJsonReader.read(json, message, options); + return message; + } + throw new Error(`Unable to parse message ${this.typeName} from JSON ${json_typings_1.typeofJsonValue(json)}.`); + } + /** + * This is an internal method. If you just want to write a message + * to JSON, use `toJson()` or `toJsonString(). + * + * Writes JSON value and returns it. + */ + internalJsonWrite(message, options) { + return this.refJsonWriter.write(message, options); + } + /** + * This is an internal method. If you just want to write a message + * in binary format, use `toBinary()`. + * + * Serializes the message in binary format and appends it to the given + * writer. Returns passed writer. + */ + internalBinaryWrite(message, writer, options) { + this.refBinWriter.write(message, writer, options); + return writer; + } + /** + * This is an internal method. If you just want to read a message from + * binary data, use `fromBinary()`. + * + * Reads data from binary format and merges the fields into + * the target according to protobuf rules. If the target is + * omitted, a new instance is created first. + */ + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(); + this.refBinReader.read(reader, message, options, length); + return message; + } +} +exports.MessageType = MessageType; /***/ }), -/***/ 3583: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 8531: +/***/ ((__unused_webpack_module, exports) => { "use strict"; -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - - +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getSelectedOneofValue = exports.clearOneofValue = exports.setUnknownOneofValue = exports.setOneofValue = exports.getOneofValue = exports.isOneofGroup = void 0; /** - * Module dependencies. - * @private + * Is the given value a valid oneof group? + * + * We represent protobuf `oneof` as algebraic data types (ADT) in generated + * code. But when working with messages of unknown type, the ADT does not + * help us. + * + * This type guard checks if the given object adheres to the ADT rules, which + * are as follows: + * + * 1) Must be an object. + * + * 2) Must have a "oneofKind" discriminator property. + * + * 3) If "oneofKind" is `undefined`, no member field is selected. The object + * must not have any other properties. + * + * 4) If "oneofKind" is a `string`, the member field with this name is + * selected. + * + * 5) If a member field is selected, the object must have a second property + * with this name. The property must not be `undefined`. + * + * 6) No extra properties are allowed. The object has either one property + * (no selection) or two properties (selection). + * */ - -var db = __nccwpck_require__(7426) -var extname = (__nccwpck_require__(1017).extname) - +function isOneofGroup(any) { + if (typeof any != 'object' || any === null || !any.hasOwnProperty('oneofKind')) { + return false; + } + switch (typeof any.oneofKind) { + case "string": + if (any[any.oneofKind] === undefined) + return false; + return Object.keys(any).length == 2; + case "undefined": + return Object.keys(any).length == 1; + default: + return false; + } +} +exports.isOneofGroup = isOneofGroup; /** - * Module variables. - * @private + * Returns the value of the given field in a oneof group. */ - -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i - +function getOneofValue(oneof, kind) { + return oneof[kind]; +} +exports.getOneofValue = getOneofValue; +function setOneofValue(oneof, kind, value) { + if (oneof.oneofKind !== undefined) { + delete oneof[oneof.oneofKind]; + } + oneof.oneofKind = kind; + if (value !== undefined) { + oneof[kind] = value; + } +} +exports.setOneofValue = setOneofValue; +function setUnknownOneofValue(oneof, kind, value) { + if (oneof.oneofKind !== undefined) { + delete oneof[oneof.oneofKind]; + } + oneof.oneofKind = kind; + if (value !== undefined && kind !== undefined) { + oneof[kind] = value; + } +} +exports.setUnknownOneofValue = setUnknownOneofValue; /** - * Module exports. - * @public + * Removes the selected field in a oneof group. + * + * Note that the recommended way to modify a oneof group is to set + * a new object: + * + * ```ts + * message.result = { oneofKind: undefined }; + * ``` */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - +function clearOneofValue(oneof) { + if (oneof.oneofKind !== undefined) { + delete oneof[oneof.oneofKind]; + } + oneof.oneofKind = undefined; +} +exports.clearOneofValue = clearOneofValue; /** - * Get the default charset for a MIME type. + * Returns the selected value of the given oneof group. * - * @param {string} type - * @return {boolean|string} + * Not that the recommended way to access a oneof group is to check + * the "oneofKind" property and let TypeScript narrow down the union + * type for you: + * + * ```ts + * if (message.result.oneofKind === "error") { + * message.result.error; // string + * } + * ``` + * + * In the rare case you just need the value, and do not care about + * which protobuf field is selected, you can use this function + * for convenience. */ +function getSelectedOneofValue(oneof) { + if (oneof.oneofKind === undefined) { + return undefined; + } + return oneof[oneof.oneofKind]; +} +exports.getSelectedOneofValue = getSelectedOneofValue; -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] +/***/ }), - if (mime && mime.charset) { - return mime.charset - } +/***/ 7777: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } +"use strict"; - return false +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PbLong = exports.PbULong = exports.detectBi = void 0; +const goog_varint_1 = __nccwpck_require__(433); +let BI; +function detectBi() { + const dv = new DataView(new ArrayBuffer(8)); + const ok = globalThis.BigInt !== undefined + && typeof dv.getBigInt64 === "function" + && typeof dv.getBigUint64 === "function" + && typeof dv.setBigInt64 === "function" + && typeof dv.setBigUint64 === "function"; + BI = ok ? { + MIN: BigInt("-9223372036854775808"), + MAX: BigInt("9223372036854775807"), + UMIN: BigInt("0"), + UMAX: BigInt("18446744073709551615"), + C: BigInt, + V: dv, + } : undefined; +} +exports.detectBi = detectBi; +detectBi(); +function assertBi(bi) { + if (!bi) + throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support"); +} +// used to validate from(string) input (when bigint is unavailable) +const RE_DECIMAL_STR = /^-?[0-9]+$/; +// constants for binary math +const TWO_PWR_32_DBL = 0x100000000; +const HALF_2_PWR_32 = 0x080000000; +// base class for PbLong and PbULong provides shared code +class SharedPbLong { + /** + * Create a new instance with the given bits. + */ + constructor(lo, hi) { + this.lo = lo | 0; + this.hi = hi | 0; + } + /** + * Is this instance equal to 0? + */ + isZero() { + return this.lo == 0 && this.hi == 0; + } + /** + * Convert to a native number. + */ + toNumber() { + let result = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0); + if (!Number.isSafeInteger(result)) + throw new Error("cannot convert to safe number"); + return result; + } } - /** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} + * 64-bit unsigned integer as two 32-bit values. + * Converts between `string`, `number` and `bigint` representations. + */ +class PbULong extends SharedPbLong { + /** + * Create instance from a `string`, `number` or `bigint`. + */ + static from(value) { + if (BI) + // noinspection FallThroughInSwitchStatementJS + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + if (value == "") + throw new Error('string is no integer'); + value = BI.C(value); + case "number": + if (value === 0) + return this.ZERO; + value = BI.C(value); + case "bigint": + if (!value) + return this.ZERO; + if (value < BI.UMIN) + throw new Error('signed value for ulong'); + if (value > BI.UMAX) + throw new Error('ulong too large'); + BI.V.setBigUint64(0, value, true); + return new PbULong(BI.V.getInt32(0, true), BI.V.getInt32(4, true)); + } + else + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + value = value.trim(); + if (!RE_DECIMAL_STR.test(value)) + throw new Error('string is no integer'); + let [minus, lo, hi] = goog_varint_1.int64fromString(value); + if (minus) + throw new Error('signed value for ulong'); + return new PbULong(lo, hi); + case "number": + if (value == 0) + return this.ZERO; + if (!Number.isSafeInteger(value)) + throw new Error('number is no integer'); + if (value < 0) + throw new Error('signed value for ulong'); + return new PbULong(value, value / TWO_PWR_32_DBL); + } + throw new Error('unknown value ' + typeof value); + } + /** + * Convert to decimal string. + */ + toString() { + return BI ? this.toBigInt().toString() : goog_varint_1.int64toString(this.lo, this.hi); + } + /** + * Convert to native bigint. + */ + toBigInt() { + assertBi(BI); + BI.V.setInt32(0, this.lo, true); + BI.V.setInt32(4, this.hi, true); + return BI.V.getBigUint64(0, true); + } +} +exports.PbULong = PbULong; +/** + * ulong 0 singleton. + */ +PbULong.ZERO = new PbULong(0, 0); +/** + * 64-bit signed integer as two 32-bit values. + * Converts between `string`, `number` and `bigint` representations. + */ +class PbLong extends SharedPbLong { + /** + * Create instance from a `string`, `number` or `bigint`. + */ + static from(value) { + if (BI) + // noinspection FallThroughInSwitchStatementJS + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + if (value == "") + throw new Error('string is no integer'); + value = BI.C(value); + case "number": + if (value === 0) + return this.ZERO; + value = BI.C(value); + case "bigint": + if (!value) + return this.ZERO; + if (value < BI.MIN) + throw new Error('signed long too small'); + if (value > BI.MAX) + throw new Error('signed long too large'); + BI.V.setBigInt64(0, value, true); + return new PbLong(BI.V.getInt32(0, true), BI.V.getInt32(4, true)); + } + else + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + value = value.trim(); + if (!RE_DECIMAL_STR.test(value)) + throw new Error('string is no integer'); + let [minus, lo, hi] = goog_varint_1.int64fromString(value); + if (minus) { + if (hi > HALF_2_PWR_32 || (hi == HALF_2_PWR_32 && lo != 0)) + throw new Error('signed long too small'); + } + else if (hi >= HALF_2_PWR_32) + throw new Error('signed long too large'); + let pbl = new PbLong(lo, hi); + return minus ? pbl.negate() : pbl; + case "number": + if (value == 0) + return this.ZERO; + if (!Number.isSafeInteger(value)) + throw new Error('number is no integer'); + return value > 0 + ? new PbLong(value, value / TWO_PWR_32_DBL) + : new PbLong(-value, -value / TWO_PWR_32_DBL).negate(); + } + throw new Error('unknown value ' + typeof value); + } + /** + * Do we have a minus sign? + */ + isNegative() { + return (this.hi & HALF_2_PWR_32) !== 0; + } + /** + * Negate two's complement. + * Invert all the bits and add one to the result. + */ + negate() { + let hi = ~this.hi, lo = this.lo; + if (lo) + lo = ~lo + 1; + else + hi += 1; + return new PbLong(lo, hi); + } + /** + * Convert to decimal string. + */ + toString() { + if (BI) + return this.toBigInt().toString(); + if (this.isNegative()) { + let n = this.negate(); + return '-' + goog_varint_1.int64toString(n.lo, n.hi); + } + return goog_varint_1.int64toString(this.lo, this.hi); + } + /** + * Convert to native bigint. + */ + toBigInt() { + assertBi(BI); + BI.V.setInt32(0, this.lo, true); + BI.V.setInt32(4, this.hi, true); + return BI.V.getBigInt64(0, true); + } +} +exports.PbLong = PbLong; +/** + * long 0 singleton. */ +PbLong.ZERO = new PbLong(0, 0); -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - if (!mime) { - return false - } +/***/ }), - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } +/***/ 5290: +/***/ ((__unused_webpack_module, exports) => { - return mime -} +"use strict"; +// Copyright (c) 2016, Daniel Wirtz All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of its author, nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.utf8read = void 0; +const fromCharCodes = (chunk) => String.fromCharCode.apply(String, chunk); /** - * Get the default extension for a MIME type. + * @deprecated This function will no longer be exported with the next major + * release, since protobuf-ts has switch to TextDecoder API. If you need this + * function, please migrate to @protobufjs/utf8. For context, see + * https://github.com/timostamm/protobuf-ts/issues/184 * - * @param {string} type - * @return {boolean|string} + * Reads UTF8 bytes as a string. + * + * See [protobufjs / utf8](https://github.com/protobufjs/protobuf.js/blob/9893e35b854621cce64af4bf6be2cff4fb892796/lib/utf8/index.js#L40) + * + * Copyright (c) 2016, Daniel Wirtz */ +function utf8read(bytes) { + if (bytes.length < 1) + return ""; + let pos = 0, // position in bytes + parts = [], chunk = [], i = 0, // char offset + t; // temporary + let len = bytes.length; + while (pos < len) { + t = bytes[pos++]; + if (t < 128) + chunk[i++] = t; + else if (t > 191 && t < 224) + chunk[i++] = (t & 31) << 6 | bytes[pos++] & 63; + else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (bytes[pos++] & 63) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63) - 0x10000; + chunk[i++] = 0xD800 + (t >> 10); + chunk[i++] = 0xDC00 + (t & 1023); + } + else + chunk[i++] = (t & 15) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63; + if (i > 8191) { + parts.push(fromCharCodes(chunk)); + i = 0; + } + } + if (parts.length) { + if (i) + parts.push(fromCharCodes(chunk.slice(0, i))); + return parts.join(""); + } + return fromCharCodes(chunk.slice(0, i)); +} +exports.utf8read = utf8read; -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] +/***/ }), - if (!exts || !exts.length) { - return false - } +/***/ 1593: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - return exts[0] -} +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ReflectionBinaryReader = void 0; +const binary_format_contract_1 = __nccwpck_require__(4921); +const reflection_info_1 = __nccwpck_require__(1370); +const reflection_long_convert_1 = __nccwpck_require__(4612); +const reflection_scalar_default_1 = __nccwpck_require__(4863); /** - * Lookup the MIME type for a file path/extension. + * Reads proto3 messages in binary format using reflection information. * - * @param {string} path - * @return {boolean|string} + * https://developers.google.com/protocol-buffers/docs/encoding */ +class ReflectionBinaryReader { + constructor(info) { + this.info = info; + } + prepare() { + var _a; + if (!this.fieldNoToField) { + const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : []; + this.fieldNoToField = new Map(fieldsInput.map(field => [field.no, field])); + } + } + /** + * Reads a message from binary format into the target message. + * + * Repeated fields are appended. Map entries are added, overwriting + * existing keys. + * + * If a message field is already present, it will be merged with the + * new data. + */ + read(reader, message, options, length) { + this.prepare(); + const end = length === undefined ? reader.len : reader.pos + length; + while (reader.pos < end) { + // read the tag and find the field + const [fieldNo, wireType] = reader.tag(), field = this.fieldNoToField.get(fieldNo); + if (!field) { + let u = options.readUnknownField; + if (u == "throw") + throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.info.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? binary_format_contract_1.UnknownFieldHandler.onRead : u)(this.info.typeName, message, fieldNo, wireType, d); + continue; + } + // target object for the field we are reading + let target = message, repeated = field.repeat, localName = field.localName; + // if field is member of oneof ADT, use ADT as target + if (field.oneof) { + target = target[field.oneof]; + // if other oneof member selected, set new ADT + if (target.oneofKind !== localName) + target = message[field.oneof] = { + oneofKind: localName + }; + } + // we have handled oneof above, we just have read the value into `target[localName]` + switch (field.kind) { + case "scalar": + case "enum": + let T = field.kind == "enum" ? reflection_info_1.ScalarType.INT32 : field.T; + let L = field.kind == "scalar" ? field.L : undefined; + if (repeated) { + let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values + if (wireType == binary_format_contract_1.WireType.LengthDelimited && T != reflection_info_1.ScalarType.STRING && T != reflection_info_1.ScalarType.BYTES) { + let e = reader.uint32() + reader.pos; + while (reader.pos < e) + arr.push(this.scalar(reader, T, L)); + } + else + arr.push(this.scalar(reader, T, L)); + } + else + target[localName] = this.scalar(reader, T, L); + break; + case "message": + if (repeated) { + let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values + let msg = field.T().internalBinaryRead(reader, reader.uint32(), options); + arr.push(msg); + } + else + target[localName] = field.T().internalBinaryRead(reader, reader.uint32(), options, target[localName]); + break; + case "map": + let [mapKey, mapVal] = this.mapEntry(field, reader, options); + // safe to assume presence of map object, oneof cannot contain repeated values + target[localName][mapKey] = mapVal; + break; + } + } + } + /** + * Read a map field, expecting key field = 1, value field = 2 + */ + mapEntry(field, reader, options) { + let length = reader.uint32(); + let end = reader.pos + length; + let key = undefined; // javascript only allows number or string for object properties + let val = undefined; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case 1: + if (field.K == reflection_info_1.ScalarType.BOOL) + key = reader.bool().toString(); + else + // long types are read as string, number types are okay as number + key = this.scalar(reader, field.K, reflection_info_1.LongType.STRING); + break; + case 2: + switch (field.V.kind) { + case "scalar": + val = this.scalar(reader, field.V.T, field.V.L); + break; + case "enum": + val = reader.int32(); + break; + case "message": + val = field.V.T().internalBinaryRead(reader, reader.uint32(), options); + break; + } + break; + default: + throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) in map entry for ${this.info.typeName}#${field.name}`); + } + } + if (key === undefined) { + let keyRaw = reflection_scalar_default_1.reflectionScalarDefault(field.K); + key = field.K == reflection_info_1.ScalarType.BOOL ? keyRaw.toString() : keyRaw; + } + if (val === undefined) + switch (field.V.kind) { + case "scalar": + val = reflection_scalar_default_1.reflectionScalarDefault(field.V.T, field.V.L); + break; + case "enum": + val = 0; + break; + case "message": + val = field.V.T().create(); + break; + } + return [key, val]; + } + scalar(reader, type, longType) { + switch (type) { + case reflection_info_1.ScalarType.INT32: + return reader.int32(); + case reflection_info_1.ScalarType.STRING: + return reader.string(); + case reflection_info_1.ScalarType.BOOL: + return reader.bool(); + case reflection_info_1.ScalarType.DOUBLE: + return reader.double(); + case reflection_info_1.ScalarType.FLOAT: + return reader.float(); + case reflection_info_1.ScalarType.INT64: + return reflection_long_convert_1.reflectionLongConvert(reader.int64(), longType); + case reflection_info_1.ScalarType.UINT64: + return reflection_long_convert_1.reflectionLongConvert(reader.uint64(), longType); + case reflection_info_1.ScalarType.FIXED64: + return reflection_long_convert_1.reflectionLongConvert(reader.fixed64(), longType); + case reflection_info_1.ScalarType.FIXED32: + return reader.fixed32(); + case reflection_info_1.ScalarType.BYTES: + return reader.bytes(); + case reflection_info_1.ScalarType.UINT32: + return reader.uint32(); + case reflection_info_1.ScalarType.SFIXED32: + return reader.sfixed32(); + case reflection_info_1.ScalarType.SFIXED64: + return reflection_long_convert_1.reflectionLongConvert(reader.sfixed64(), longType); + case reflection_info_1.ScalarType.SINT32: + return reader.sint32(); + case reflection_info_1.ScalarType.SINT64: + return reflection_long_convert_1.reflectionLongConvert(reader.sint64(), longType); + } + } +} +exports.ReflectionBinaryReader = ReflectionBinaryReader; -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) +/***/ }), - if (!extension) { - return false - } +/***/ 7170: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - return exports.types[extension] || false -} +"use strict"; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ReflectionBinaryWriter = void 0; +const binary_format_contract_1 = __nccwpck_require__(4921); +const reflection_info_1 = __nccwpck_require__(1370); +const assert_1 = __nccwpck_require__(4253); +const pb_long_1 = __nccwpck_require__(7777); /** - * Populate the extensions and types maps. - * @private + * Writes proto3 messages in binary format using reflection information. + * + * https://developers.google.com/protocol-buffers/docs/encoding */ - -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return +class ReflectionBinaryWriter { + constructor(info) { + this.info = info; } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue + prepare() { + if (!this.fields) { + const fieldsInput = this.info.fields ? this.info.fields.concat() : []; + this.fields = fieldsInput.sort((a, b) => a.no - b.no); } - } - - // set the extension -> mime - types[extension] = type } - }) + /** + * Writes the message to binary format. + */ + write(message, writer, options) { + this.prepare(); + for (const field of this.fields) { + let value, // this will be our field value, whether it is member of a oneof or not + emitDefault, // whether we emit the default value (only true for oneof members) + repeated = field.repeat, localName = field.localName; + // handle oneof ADT + if (field.oneof) { + const group = message[field.oneof]; + if (group.oneofKind !== localName) + continue; // if field is not selected, skip + value = group[localName]; + emitDefault = true; + } + else { + value = message[localName]; + emitDefault = false; + } + // we have handled oneof above. we just have to honor `emitDefault`. + switch (field.kind) { + case "scalar": + case "enum": + let T = field.kind == "enum" ? reflection_info_1.ScalarType.INT32 : field.T; + if (repeated) { + assert_1.assert(Array.isArray(value)); + if (repeated == reflection_info_1.RepeatType.PACKED) + this.packed(writer, T, field.no, value); + else + for (const item of value) + this.scalar(writer, T, field.no, item, true); + } + else if (value === undefined) + assert_1.assert(field.opt); + else + this.scalar(writer, T, field.no, value, emitDefault || field.opt); + break; + case "message": + if (repeated) { + assert_1.assert(Array.isArray(value)); + for (const item of value) + this.message(writer, options, field.T(), field.no, item); + } + else { + this.message(writer, options, field.T(), field.no, value); + } + break; + case "map": + assert_1.assert(typeof value == 'object' && value !== null); + for (const [key, val] of Object.entries(value)) + this.mapEntry(writer, options, field, key, val); + break; + } + } + let u = options.writeUnknownFields; + if (u !== false) + (u === true ? binary_format_contract_1.UnknownFieldHandler.onWrite : u)(this.info.typeName, message, writer); + } + mapEntry(writer, options, field, key, value) { + writer.tag(field.no, binary_format_contract_1.WireType.LengthDelimited); + writer.fork(); + // javascript only allows number or string for object properties + // we convert from our representation to the protobuf type + let keyValue = key; + switch (field.K) { + case reflection_info_1.ScalarType.INT32: + case reflection_info_1.ScalarType.FIXED32: + case reflection_info_1.ScalarType.UINT32: + case reflection_info_1.ScalarType.SFIXED32: + case reflection_info_1.ScalarType.SINT32: + keyValue = Number.parseInt(key); + break; + case reflection_info_1.ScalarType.BOOL: + assert_1.assert(key == 'true' || key == 'false'); + keyValue = key == 'true'; + break; + } + // write key, expecting key field number = 1 + this.scalar(writer, field.K, 1, keyValue, true); + // write value, expecting value field number = 2 + switch (field.V.kind) { + case 'scalar': + this.scalar(writer, field.V.T, 2, value, true); + break; + case 'enum': + this.scalar(writer, reflection_info_1.ScalarType.INT32, 2, value, true); + break; + case 'message': + this.message(writer, options, field.V.T(), 2, value); + break; + } + writer.join(); + } + message(writer, options, handler, fieldNo, value) { + if (value === undefined) + return; + handler.internalBinaryWrite(value, writer.tag(fieldNo, binary_format_contract_1.WireType.LengthDelimited).fork(), options); + writer.join(); + } + /** + * Write a single scalar value. + */ + scalar(writer, type, fieldNo, value, emitDefault) { + let [wireType, method, isDefault] = this.scalarInfo(type, value); + if (!isDefault || emitDefault) { + writer.tag(fieldNo, wireType); + writer[method](value); + } + } + /** + * Write an array of scalar values in packed format. + */ + packed(writer, type, fieldNo, value) { + if (!value.length) + return; + assert_1.assert(type !== reflection_info_1.ScalarType.BYTES && type !== reflection_info_1.ScalarType.STRING); + // write tag + writer.tag(fieldNo, binary_format_contract_1.WireType.LengthDelimited); + // begin length-delimited + writer.fork(); + // write values without tags + let [, method,] = this.scalarInfo(type); + for (let i = 0; i < value.length; i++) + writer[method](value[i]); + // end length delimited + writer.join(); + } + /** + * Get information for writing a scalar value. + * + * Returns tuple: + * [0]: appropriate WireType + * [1]: name of the appropriate method of IBinaryWriter + * [2]: whether the given value is a default value + * + * If argument `value` is omitted, [2] is always false. + */ + scalarInfo(type, value) { + let t = binary_format_contract_1.WireType.Varint; + let m; + let i = value === undefined; + let d = value === 0; + switch (type) { + case reflection_info_1.ScalarType.INT32: + m = "int32"; + break; + case reflection_info_1.ScalarType.STRING: + d = i || !value.length; + t = binary_format_contract_1.WireType.LengthDelimited; + m = "string"; + break; + case reflection_info_1.ScalarType.BOOL: + d = value === false; + m = "bool"; + break; + case reflection_info_1.ScalarType.UINT32: + m = "uint32"; + break; + case reflection_info_1.ScalarType.DOUBLE: + t = binary_format_contract_1.WireType.Bit64; + m = "double"; + break; + case reflection_info_1.ScalarType.FLOAT: + t = binary_format_contract_1.WireType.Bit32; + m = "float"; + break; + case reflection_info_1.ScalarType.INT64: + d = i || pb_long_1.PbLong.from(value).isZero(); + m = "int64"; + break; + case reflection_info_1.ScalarType.UINT64: + d = i || pb_long_1.PbULong.from(value).isZero(); + m = "uint64"; + break; + case reflection_info_1.ScalarType.FIXED64: + d = i || pb_long_1.PbULong.from(value).isZero(); + t = binary_format_contract_1.WireType.Bit64; + m = "fixed64"; + break; + case reflection_info_1.ScalarType.BYTES: + d = i || !value.byteLength; + t = binary_format_contract_1.WireType.LengthDelimited; + m = "bytes"; + break; + case reflection_info_1.ScalarType.FIXED32: + t = binary_format_contract_1.WireType.Bit32; + m = "fixed32"; + break; + case reflection_info_1.ScalarType.SFIXED32: + t = binary_format_contract_1.WireType.Bit32; + m = "sfixed32"; + break; + case reflection_info_1.ScalarType.SFIXED64: + d = i || pb_long_1.PbLong.from(value).isZero(); + t = binary_format_contract_1.WireType.Bit64; + m = "sfixed64"; + break; + case reflection_info_1.ScalarType.SINT32: + m = "sint32"; + break; + case reflection_info_1.ScalarType.SINT64: + d = i || pb_long_1.PbLong.from(value).isZero(); + m = "sint64"; + break; + } + return [t, m, i || d]; + } } +exports.ReflectionBinaryWriter = ReflectionBinaryWriter; /***/ }), -/***/ 3973: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 7317: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -module.exports = minimatch -minimatch.Minimatch = Minimatch +"use strict"; -var path = (function () { try { return __nccwpck_require__(1017) } catch (e) {}}()) || { - sep: '/' +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.containsMessageType = void 0; +const message_type_contract_1 = __nccwpck_require__(1682); +/** + * Check if the provided object is a proto message. + * + * Note that this is an experimental feature - it is here to stay, but + * implementation details may change without notice. + */ +function containsMessageType(msg) { + return msg[message_type_contract_1.MESSAGE_TYPE] != null; } -minimatch.sep = path.sep +exports.containsMessageType = containsMessageType; -var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __nccwpck_require__(3717) -var plTypes = { - '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, - '?': { open: '(?:', close: ')?' }, - '+': { open: '(?:', close: ')+' }, - '*': { open: '(?:', close: ')*' }, - '@': { open: '(?:', close: ')' } -} +/***/ }), -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]' +/***/ 390: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// * => any number of characters -var star = qmark + '*?' +"use strict"; -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.reflectionCreate = void 0; +const reflection_scalar_default_1 = __nccwpck_require__(4863); +const message_type_contract_1 = __nccwpck_require__(1682); +/** + * Creates an instance of the generic message, using the field + * information. + */ +function reflectionCreate(type) { + /** + * This ternary can be removed in the next major version. + * The `Object.create()` code path utilizes a new `messagePrototype` + * property on the `IMessageType` which has this same `MESSAGE_TYPE` + * non-enumerable property on it. Doing it this way means that we only + * pay the cost of `Object.defineProperty()` once per `IMessageType` + * class of once per "instance". The falsy code path is only provided + * for backwards compatibility in cases where the runtime library is + * updated without also updating the generated code. + */ + const msg = type.messagePrototype + ? Object.create(type.messagePrototype) + : Object.defineProperty({}, message_type_contract_1.MESSAGE_TYPE, { value: type }); + for (let field of type.fields) { + let name = field.localName; + if (field.opt) + continue; + if (field.oneof) + msg[field.oneof] = { oneofKind: undefined }; + else if (field.repeat) + msg[name] = []; + else + switch (field.kind) { + case "scalar": + msg[name] = reflection_scalar_default_1.reflectionScalarDefault(field.T, field.L); + break; + case "enum": + // we require 0 to be default value for all enums + msg[name] = 0; + break; + case "map": + msg[name] = {}; + break; + } + } + return msg; +} +exports.reflectionCreate = reflectionCreate; -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') +/***/ }), -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} +/***/ 9473: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// normalizes slashes. -var slashSplit = /\/+/ +"use strict"; -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.reflectionEquals = void 0; +const reflection_info_1 = __nccwpck_require__(1370); +/** + * Determines whether two message of the same type have the same field values. + * Checks for deep equality, traversing repeated fields, oneof groups, maps + * and messages recursively. + * Will also return true if both messages are `undefined`. + */ +function reflectionEquals(info, a, b) { + if (a === b) + return true; + if (!a || !b) + return false; + for (let field of info.fields) { + let localName = field.localName; + let val_a = field.oneof ? a[field.oneof][localName] : a[localName]; + let val_b = field.oneof ? b[field.oneof][localName] : b[localName]; + switch (field.kind) { + case "enum": + case "scalar": + let t = field.kind == "enum" ? reflection_info_1.ScalarType.INT32 : field.T; + if (!(field.repeat + ? repeatedPrimitiveEq(t, val_a, val_b) + : primitiveEq(t, val_a, val_b))) + return false; + break; + case "map": + if (!(field.V.kind == "message" + ? repeatedMsgEq(field.V.T(), objectValues(val_a), objectValues(val_b)) + : repeatedPrimitiveEq(field.V.kind == "enum" ? reflection_info_1.ScalarType.INT32 : field.V.T, objectValues(val_a), objectValues(val_b)))) + return false; + break; + case "message": + let T = field.T(); + if (!(field.repeat + ? repeatedMsgEq(T, val_a, val_b) + : T.equals(val_a, val_b))) + return false; + break; + } + } + return true; } - -function ext (a, b) { - b = b || {} - var t = {} - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - return t +exports.reflectionEquals = reflectionEquals; +const objectValues = Object.values; +function primitiveEq(type, a, b) { + if (a === b) + return true; + if (type !== reflection_info_1.ScalarType.BYTES) + return false; + let ba = a; + let bb = b; + if (ba.length !== bb.length) + return false; + for (let i = 0; i < ba.length; i++) + if (ba[i] != bb[i]) + return false; + return true; +} +function repeatedPrimitiveEq(type, a, b) { + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; i++) + if (!primitiveEq(type, a[i], b[i])) + return false; + return true; +} +function repeatedMsgEq(type, a, b) { + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; i++) + if (!type.equals(a[i], b[i])) + return false; + return true; } -minimatch.defaults = function (def) { - if (!def || typeof def !== 'object' || !Object.keys(def).length) { - return minimatch - } - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - m.Minimatch.defaults = function defaults (options) { - return orig.defaults(ext(def, options)).Minimatch - } - - m.filter = function filter (pattern, options) { - return orig.filter(pattern, ext(def, options)) - } - - m.defaults = function defaults (options) { - return orig.defaults(ext(def, options)) - } - m.makeRe = function makeRe (pattern, options) { - return orig.makeRe(pattern, ext(def, options)) - } +/***/ }), - m.braceExpand = function braceExpand (pattern, options) { - return orig.braceExpand(pattern, ext(def, options)) - } +/***/ 1370: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - m.match = function (list, pattern, options) { - return orig.match(list, pattern, ext(def, options)) - } +"use strict"; - return m +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.readMessageOption = exports.readFieldOption = exports.readFieldOptions = exports.normalizeFieldInfo = exports.RepeatType = exports.LongType = exports.ScalarType = void 0; +const lower_camel_case_1 = __nccwpck_require__(4772); +/** + * Scalar value types. This is a subset of field types declared by protobuf + * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE + * are omitted, but the numerical values are identical. + */ +var ScalarType; +(function (ScalarType) { + // 0 is reserved for errors. + // Order is weird for historical reasons. + ScalarType[ScalarType["DOUBLE"] = 1] = "DOUBLE"; + ScalarType[ScalarType["FLOAT"] = 2] = "FLOAT"; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + ScalarType[ScalarType["INT64"] = 3] = "INT64"; + ScalarType[ScalarType["UINT64"] = 4] = "UINT64"; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + ScalarType[ScalarType["INT32"] = 5] = "INT32"; + ScalarType[ScalarType["FIXED64"] = 6] = "FIXED64"; + ScalarType[ScalarType["FIXED32"] = 7] = "FIXED32"; + ScalarType[ScalarType["BOOL"] = 8] = "BOOL"; + ScalarType[ScalarType["STRING"] = 9] = "STRING"; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + // TYPE_GROUP = 10, + // TYPE_MESSAGE = 11, // Length-delimited aggregate. + // New in version 2. + ScalarType[ScalarType["BYTES"] = 12] = "BYTES"; + ScalarType[ScalarType["UINT32"] = 13] = "UINT32"; + // TYPE_ENUM = 14, + ScalarType[ScalarType["SFIXED32"] = 15] = "SFIXED32"; + ScalarType[ScalarType["SFIXED64"] = 16] = "SFIXED64"; + ScalarType[ScalarType["SINT32"] = 17] = "SINT32"; + ScalarType[ScalarType["SINT64"] = 18] = "SINT64"; +})(ScalarType = exports.ScalarType || (exports.ScalarType = {})); +/** + * JavaScript representation of 64 bit integral types. Equivalent to the + * field option "jstype". + * + * By default, protobuf-ts represents 64 bit types as `bigint`. + * + * You can change the default behaviour by enabling the plugin parameter + * `long_type_string`, which will represent 64 bit types as `string`. + * + * Alternatively, you can change the behaviour for individual fields + * with the field option "jstype": + * + * ```protobuf + * uint64 my_field = 1 [jstype = JS_STRING]; + * uint64 other_field = 2 [jstype = JS_NUMBER]; + * ``` + */ +var LongType; +(function (LongType) { + /** + * Use JavaScript `bigint`. + * + * Field option `[jstype = JS_NORMAL]`. + */ + LongType[LongType["BIGINT"] = 0] = "BIGINT"; + /** + * Use JavaScript `string`. + * + * Field option `[jstype = JS_STRING]`. + */ + LongType[LongType["STRING"] = 1] = "STRING"; + /** + * Use JavaScript `number`. + * + * Large values will loose precision. + * + * Field option `[jstype = JS_NUMBER]`. + */ + LongType[LongType["NUMBER"] = 2] = "NUMBER"; +})(LongType = exports.LongType || (exports.LongType = {})); +/** + * Protobuf 2.1.0 introduced packed repeated fields. + * Setting the field option `[packed = true]` enables packing. + * + * In proto3, all repeated fields are packed by default. + * Setting the field option `[packed = false]` disables packing. + * + * Packed repeated fields are encoded with a single tag, + * then a length-delimiter, then the element values. + * + * Unpacked repeated fields are encoded with a tag and + * value for each element. + * + * `bytes` and `string` cannot be packed. + */ +var RepeatType; +(function (RepeatType) { + /** + * The field is not repeated. + */ + RepeatType[RepeatType["NO"] = 0] = "NO"; + /** + * The field is repeated and should be packed. + * Invalid for `bytes` and `string`, they cannot be packed. + */ + RepeatType[RepeatType["PACKED"] = 1] = "PACKED"; + /** + * The field is repeated but should not be packed. + * The only valid repeat type for repeated `bytes` and `string`. + */ + RepeatType[RepeatType["UNPACKED"] = 2] = "UNPACKED"; +})(RepeatType = exports.RepeatType || (exports.RepeatType = {})); +/** + * Turns PartialFieldInfo into FieldInfo. + */ +function normalizeFieldInfo(field) { + var _a, _b, _c, _d; + field.localName = (_a = field.localName) !== null && _a !== void 0 ? _a : lower_camel_case_1.lowerCamelCase(field.name); + field.jsonName = (_b = field.jsonName) !== null && _b !== void 0 ? _b : lower_camel_case_1.lowerCamelCase(field.name); + field.repeat = (_c = field.repeat) !== null && _c !== void 0 ? _c : RepeatType.NO; + field.opt = (_d = field.opt) !== null && _d !== void 0 ? _d : (field.repeat ? false : field.oneof ? false : field.kind == "message"); + return field; } - -Minimatch.defaults = function (def) { - return minimatch.defaults(def).Minimatch +exports.normalizeFieldInfo = normalizeFieldInfo; +/** + * Read custom field options from a generated message type. + * + * @deprecated use readFieldOption() + */ +function readFieldOptions(messageType, fieldName, extensionName, extensionType) { + var _a; + const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options; + return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : undefined; } - -function minimatch (p, pattern, options) { - assertValidPattern(pattern) - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - return new Minimatch(pattern, options).match(p) +exports.readFieldOptions = readFieldOptions; +function readFieldOption(messageType, fieldName, extensionName, extensionType) { + var _a; + const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options; + if (!options) { + return undefined; + } + const optionVal = options[extensionName]; + if (optionVal === undefined) { + return optionVal; + } + return extensionType ? extensionType.fromJson(optionVal) : optionVal; } +exports.readFieldOption = readFieldOption; +function readMessageOption(messageType, extensionName, extensionType) { + const options = messageType.options; + const optionVal = options[extensionName]; + if (optionVal === undefined) { + return optionVal; + } + return extensionType ? extensionType.fromJson(optionVal) : optionVal; +} +exports.readMessageOption = readMessageOption; -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - assertValidPattern(pattern) - - if (!options) options = {} - pattern = pattern.trim() +/***/ }), - // windows support: need to use /, not \ - if (!options.allowWindowsEscape && path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } +/***/ 229: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - this.partial = !!options.partial +"use strict"; - // make the set of regexps etc. - this.make() +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ReflectionJsonReader = void 0; +const json_typings_1 = __nccwpck_require__(661); +const base64_1 = __nccwpck_require__(196); +const reflection_info_1 = __nccwpck_require__(1370); +const pb_long_1 = __nccwpck_require__(7777); +const assert_1 = __nccwpck_require__(4253); +const reflection_long_convert_1 = __nccwpck_require__(4612); +/** + * Reads proto3 messages in canonical JSON format using reflection information. + * + * https://developers.google.com/protocol-buffers/docs/proto3#json + */ +class ReflectionJsonReader { + constructor(info) { + this.info = info; + } + prepare() { + var _a; + if (this.fMap === undefined) { + this.fMap = {}; + const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : []; + for (const field of fieldsInput) { + this.fMap[field.name] = field; + this.fMap[field.jsonName] = field; + this.fMap[field.localName] = field; + } + } + } + // Cannot parse JSON for #. + assert(condition, fieldName, jsonValue) { + if (!condition) { + let what = json_typings_1.typeofJsonValue(jsonValue); + if (what == "number" || what == "boolean") + what = jsonValue.toString(); + throw new Error(`Cannot parse JSON ${what} for ${this.info.typeName}#${fieldName}`); + } + } + /** + * Reads a message from canonical JSON format into the target message. + * + * Repeated fields are appended. Map entries are added, overwriting + * existing keys. + * + * If a message field is already present, it will be merged with the + * new data. + */ + read(input, message, options) { + this.prepare(); + const oneofsHandled = []; + for (const [jsonKey, jsonValue] of Object.entries(input)) { + const field = this.fMap[jsonKey]; + if (!field) { + if (!options.ignoreUnknownFields) + throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${jsonKey}`); + continue; + } + const localName = field.localName; + // handle oneof ADT + let target; // this will be the target for the field value, whether it is member of a oneof or not + if (field.oneof) { + if (jsonValue === null && (field.kind !== 'enum' || field.T()[0] !== 'google.protobuf.NullValue')) { + continue; + } + // since json objects are unordered by specification, it is not possible to take the last of multiple oneofs + if (oneofsHandled.includes(field.oneof)) + throw new Error(`Multiple members of the oneof group "${field.oneof}" of ${this.info.typeName} are present in JSON.`); + oneofsHandled.push(field.oneof); + target = message[field.oneof] = { + oneofKind: localName + }; + } + else { + target = message; + } + // we have handled oneof above. we just have read the value into `target`. + if (field.kind == 'map') { + if (jsonValue === null) { + continue; + } + // check input + this.assert(json_typings_1.isJsonObject(jsonValue), field.name, jsonValue); + // our target to put map entries into + const fieldObj = target[localName]; + // read entries + for (const [jsonObjKey, jsonObjValue] of Object.entries(jsonValue)) { + this.assert(jsonObjValue !== null, field.name + " map value", null); + // read value + let val; + switch (field.V.kind) { + case "message": + val = field.V.T().internalJsonRead(jsonObjValue, options); + break; + case "enum": + val = this.enum(field.V.T(), jsonObjValue, field.name, options.ignoreUnknownFields); + if (val === false) + continue; + break; + case "scalar": + val = this.scalar(jsonObjValue, field.V.T, field.V.L, field.name); + break; + } + this.assert(val !== undefined, field.name + " map value", jsonObjValue); + // read key + let key = jsonObjKey; + if (field.K == reflection_info_1.ScalarType.BOOL) + key = key == "true" ? true : key == "false" ? false : key; + key = this.scalar(key, field.K, reflection_info_1.LongType.STRING, field.name).toString(); + fieldObj[key] = val; + } + } + else if (field.repeat) { + if (jsonValue === null) + continue; + // check input + this.assert(Array.isArray(jsonValue), field.name, jsonValue); + // our target to put array entries into + const fieldArr = target[localName]; + // read array entries + for (const jsonItem of jsonValue) { + this.assert(jsonItem !== null, field.name, null); + let val; + switch (field.kind) { + case "message": + val = field.T().internalJsonRead(jsonItem, options); + break; + case "enum": + val = this.enum(field.T(), jsonItem, field.name, options.ignoreUnknownFields); + if (val === false) + continue; + break; + case "scalar": + val = this.scalar(jsonItem, field.T, field.L, field.name); + break; + } + this.assert(val !== undefined, field.name, jsonValue); + fieldArr.push(val); + } + } + else { + switch (field.kind) { + case "message": + if (jsonValue === null && field.T().typeName != 'google.protobuf.Value') { + this.assert(field.oneof === undefined, field.name + " (oneof member)", null); + continue; + } + target[localName] = field.T().internalJsonRead(jsonValue, options, target[localName]); + break; + case "enum": + let val = this.enum(field.T(), jsonValue, field.name, options.ignoreUnknownFields); + if (val === false) + continue; + target[localName] = val; + break; + case "scalar": + target[localName] = this.scalar(jsonValue, field.T, field.L, field.name); + break; + } + } + } + } + /** + * Returns `false` for unrecognized string representations. + * + * google.protobuf.NullValue accepts only JSON `null` (or the old `"NULL_VALUE"`). + */ + enum(type, json, fieldName, ignoreUnknownFields) { + if (type[0] == 'google.protobuf.NullValue') + assert_1.assert(json === null || json === "NULL_VALUE", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} only accepts null.`); + if (json === null) + // we require 0 to be default value for all enums + return 0; + switch (typeof json) { + case "number": + assert_1.assert(Number.isInteger(json), `Unable to parse field ${this.info.typeName}#${fieldName}, enum can only be integral number, got ${json}.`); + return json; + case "string": + let localEnumName = json; + if (type[2] && json.substring(0, type[2].length) === type[2]) + // lookup without the shared prefix + localEnumName = json.substring(type[2].length); + let enumNumber = type[1][localEnumName]; + if (typeof enumNumber === 'undefined' && ignoreUnknownFields) { + return false; + } + assert_1.assert(typeof enumNumber == "number", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} has no value for "${json}".`); + return enumNumber; + } + assert_1.assert(false, `Unable to parse field ${this.info.typeName}#${fieldName}, cannot parse enum value from ${typeof json}".`); + } + scalar(json, type, longType, fieldName) { + let e; + try { + switch (type) { + // float, double: JSON value will be a number or one of the special string values "NaN", "Infinity", and "-Infinity". + // Either numbers or strings are accepted. Exponent notation is also accepted. + case reflection_info_1.ScalarType.DOUBLE: + case reflection_info_1.ScalarType.FLOAT: + if (json === null) + return .0; + if (json === "NaN") + return Number.NaN; + if (json === "Infinity") + return Number.POSITIVE_INFINITY; + if (json === "-Infinity") + return Number.NEGATIVE_INFINITY; + if (json === "") { + e = "empty string"; + break; + } + if (typeof json == "string" && json.trim().length !== json.length) { + e = "extra whitespace"; + break; + } + if (typeof json != "string" && typeof json != "number") { + break; + } + let float = Number(json); + if (Number.isNaN(float)) { + e = "not a number"; + break; + } + if (!Number.isFinite(float)) { + // infinity and -infinity are handled by string representation above, so this is an error + e = "too large or small"; + break; + } + if (type == reflection_info_1.ScalarType.FLOAT) + assert_1.assertFloat32(float); + return float; + // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted. + case reflection_info_1.ScalarType.INT32: + case reflection_info_1.ScalarType.FIXED32: + case reflection_info_1.ScalarType.SFIXED32: + case reflection_info_1.ScalarType.SINT32: + case reflection_info_1.ScalarType.UINT32: + if (json === null) + return 0; + let int32; + if (typeof json == "number") + int32 = json; + else if (json === "") + e = "empty string"; + else if (typeof json == "string") { + if (json.trim().length !== json.length) + e = "extra whitespace"; + else + int32 = Number(json); + } + if (int32 === undefined) + break; + if (type == reflection_info_1.ScalarType.UINT32) + assert_1.assertUInt32(int32); + else + assert_1.assertInt32(int32); + return int32; + // int64, fixed64, uint64: JSON value will be a decimal string. Either numbers or strings are accepted. + case reflection_info_1.ScalarType.INT64: + case reflection_info_1.ScalarType.SFIXED64: + case reflection_info_1.ScalarType.SINT64: + if (json === null) + return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbLong.ZERO, longType); + if (typeof json != "number" && typeof json != "string") + break; + return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbLong.from(json), longType); + case reflection_info_1.ScalarType.FIXED64: + case reflection_info_1.ScalarType.UINT64: + if (json === null) + return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbULong.ZERO, longType); + if (typeof json != "number" && typeof json != "string") + break; + return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbULong.from(json), longType); + // bool: + case reflection_info_1.ScalarType.BOOL: + if (json === null) + return false; + if (typeof json !== "boolean") + break; + return json; + // string: + case reflection_info_1.ScalarType.STRING: + if (json === null) + return ""; + if (typeof json !== "string") { + e = "extra whitespace"; + break; + } + try { + encodeURIComponent(json); + } + catch (e) { + e = "invalid UTF8"; + break; + } + return json; + // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings. + // Either standard or URL-safe base64 encoding with/without paddings are accepted. + case reflection_info_1.ScalarType.BYTES: + if (json === null || json === "") + return new Uint8Array(0); + if (typeof json !== 'string') + break; + return base64_1.base64decode(json); + } + } + catch (error) { + e = error.message; + } + this.assert(false, fieldName + (e ? " - " + e : ""), json); + } } +exports.ReflectionJsonReader = ReflectionJsonReader; -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } +/***/ }), - this.debug(this.pattern, set) +/***/ 8980: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) +"use strict"; - this.debug(this.pattern, set) +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ReflectionJsonWriter = void 0; +const base64_1 = __nccwpck_require__(196); +const pb_long_1 = __nccwpck_require__(7777); +const reflection_info_1 = __nccwpck_require__(1370); +const assert_1 = __nccwpck_require__(4253); +/** + * Writes proto3 messages in canonical JSON format using reflection + * information. + * + * https://developers.google.com/protocol-buffers/docs/proto3#json + */ +class ReflectionJsonWriter { + constructor(info) { + var _a; + this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : []; + } + /** + * Converts the message to a JSON object, based on the field descriptors. + */ + write(message, options) { + const json = {}, source = message; + for (const field of this.fields) { + // field is not part of a oneof, simply write as is + if (!field.oneof) { + let jsonValue = this.field(field, source[field.localName], options); + if (jsonValue !== undefined) + json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue; + continue; + } + // field is part of a oneof + const group = source[field.oneof]; + if (group.oneofKind !== field.localName) + continue; // not selected, skip + const opt = field.kind == 'scalar' || field.kind == 'enum' + ? Object.assign(Object.assign({}, options), { emitDefaultValues: true }) : options; + let jsonValue = this.field(field, group[field.localName], opt); + assert_1.assert(jsonValue !== undefined); + json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue; + } + return json; + } + field(field, value, options) { + let jsonValue = undefined; + if (field.kind == 'map') { + assert_1.assert(typeof value == "object" && value !== null); + const jsonObj = {}; + switch (field.V.kind) { + case "scalar": + for (const [entryKey, entryValue] of Object.entries(value)) { + const val = this.scalar(field.V.T, entryValue, field.name, false, true); + assert_1.assert(val !== undefined); + jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key + } + break; + case "message": + const messageType = field.V.T(); + for (const [entryKey, entryValue] of Object.entries(value)) { + const val = this.message(messageType, entryValue, field.name, options); + assert_1.assert(val !== undefined); + jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key + } + break; + case "enum": + const enumInfo = field.V.T(); + for (const [entryKey, entryValue] of Object.entries(value)) { + assert_1.assert(entryValue === undefined || typeof entryValue == 'number'); + const val = this.enum(enumInfo, entryValue, field.name, false, true, options.enumAsInteger); + assert_1.assert(val !== undefined); + jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key + } + break; + } + if (options.emitDefaultValues || Object.keys(jsonObj).length > 0) + jsonValue = jsonObj; + } + else if (field.repeat) { + assert_1.assert(Array.isArray(value)); + const jsonArr = []; + switch (field.kind) { + case "scalar": + for (let i = 0; i < value.length; i++) { + const val = this.scalar(field.T, value[i], field.name, field.opt, true); + assert_1.assert(val !== undefined); + jsonArr.push(val); + } + break; + case "enum": + const enumInfo = field.T(); + for (let i = 0; i < value.length; i++) { + assert_1.assert(value[i] === undefined || typeof value[i] == 'number'); + const val = this.enum(enumInfo, value[i], field.name, field.opt, true, options.enumAsInteger); + assert_1.assert(val !== undefined); + jsonArr.push(val); + } + break; + case "message": + const messageType = field.T(); + for (let i = 0; i < value.length; i++) { + const val = this.message(messageType, value[i], field.name, options); + assert_1.assert(val !== undefined); + jsonArr.push(val); + } + break; + } + // add converted array to json output + if (options.emitDefaultValues || jsonArr.length > 0 || options.emitDefaultValues) + jsonValue = jsonArr; + } + else { + switch (field.kind) { + case "scalar": + jsonValue = this.scalar(field.T, value, field.name, field.opt, options.emitDefaultValues); + break; + case "enum": + jsonValue = this.enum(field.T(), value, field.name, field.opt, options.emitDefaultValues, options.enumAsInteger); + break; + case "message": + jsonValue = this.message(field.T(), value, field.name, options); + break; + } + } + return jsonValue; + } + /** + * Returns `null` as the default for google.protobuf.NullValue. + */ + enum(type, value, fieldName, optional, emitDefaultValues, enumAsInteger) { + if (type[0] == 'google.protobuf.NullValue') + return !emitDefaultValues && !optional ? undefined : null; + if (value === undefined) { + assert_1.assert(optional); + return undefined; + } + if (value === 0 && !emitDefaultValues && !optional) + // we require 0 to be default value for all enums + return undefined; + assert_1.assert(typeof value == 'number'); + assert_1.assert(Number.isInteger(value)); + if (enumAsInteger || !type[1].hasOwnProperty(value)) + // if we don't now the enum value, just return the number + return value; + if (type[2]) + // restore the dropped prefix + return type[2] + type[1][value]; + return type[1][value]; + } + message(type, value, fieldName, options) { + if (value === undefined) + return options.emitDefaultValues ? null : undefined; + return type.internalJsonWrite(value, options); + } + scalar(type, value, fieldName, optional, emitDefaultValues) { + if (value === undefined) { + assert_1.assert(optional); + return undefined; + } + const ed = emitDefaultValues || optional; + // noinspection FallThroughInSwitchStatementJS + switch (type) { + // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted. + case reflection_info_1.ScalarType.INT32: + case reflection_info_1.ScalarType.SFIXED32: + case reflection_info_1.ScalarType.SINT32: + if (value === 0) + return ed ? 0 : undefined; + assert_1.assertInt32(value); + return value; + case reflection_info_1.ScalarType.FIXED32: + case reflection_info_1.ScalarType.UINT32: + if (value === 0) + return ed ? 0 : undefined; + assert_1.assertUInt32(value); + return value; + // float, double: JSON value will be a number or one of the special string values "NaN", "Infinity", and "-Infinity". + // Either numbers or strings are accepted. Exponent notation is also accepted. + case reflection_info_1.ScalarType.FLOAT: + assert_1.assertFloat32(value); + case reflection_info_1.ScalarType.DOUBLE: + if (value === 0) + return ed ? 0 : undefined; + assert_1.assert(typeof value == 'number'); + if (Number.isNaN(value)) + return 'NaN'; + if (value === Number.POSITIVE_INFINITY) + return 'Infinity'; + if (value === Number.NEGATIVE_INFINITY) + return '-Infinity'; + return value; + // string: + case reflection_info_1.ScalarType.STRING: + if (value === "") + return ed ? '' : undefined; + assert_1.assert(typeof value == 'string'); + return value; + // bool: + case reflection_info_1.ScalarType.BOOL: + if (value === false) + return ed ? false : undefined; + assert_1.assert(typeof value == 'boolean'); + return value; + // JSON value will be a decimal string. Either numbers or strings are accepted. + case reflection_info_1.ScalarType.UINT64: + case reflection_info_1.ScalarType.FIXED64: + assert_1.assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint'); + let ulong = pb_long_1.PbULong.from(value); + if (ulong.isZero() && !ed) + return undefined; + return ulong.toString(); + // JSON value will be a decimal string. Either numbers or strings are accepted. + case reflection_info_1.ScalarType.INT64: + case reflection_info_1.ScalarType.SFIXED64: + case reflection_info_1.ScalarType.SINT64: + assert_1.assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint'); + let long = pb_long_1.PbLong.from(value); + if (long.isZero() && !ed) + return undefined; + return long.toString(); + // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings. + // Either standard or URL-safe base64 encoding with/without paddings are accepted. + case reflection_info_1.ScalarType.BYTES: + assert_1.assert(value instanceof Uint8Array); + if (!value.byteLength) + return ed ? "" : undefined; + return base64_1.base64encode(value); + } + } +} +exports.ReflectionJsonWriter = ReflectionJsonWriter; - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - this.debug(this.pattern, set) +/***/ }), - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) +/***/ 4612: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - this.debug(this.pattern, set) +"use strict"; - this.set = set +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.reflectionLongConvert = void 0; +const reflection_info_1 = __nccwpck_require__(1370); +/** + * Utility method to convert a PbLong or PbUlong to a JavaScript + * representation during runtime. + * + * Works with generated field information, `undefined` is equivalent + * to `STRING`. + */ +function reflectionLongConvert(long, type) { + switch (type) { + case reflection_info_1.LongType.BIGINT: + return long.toBigInt(); + case reflection_info_1.LongType.NUMBER: + return long.toNumber(); + default: + // case undefined: + // case LongType.STRING: + return long.toString(); + } } +exports.reflectionLongConvert = reflectionLongConvert; -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - if (options.nonegate) return +/***/ }), - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } +/***/ 7869: +/***/ ((__unused_webpack_module, exports) => { - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} +"use strict"; -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.reflectionMergePartial = void 0; +/** + * Copy partial data into the target message. + * + * If a singular scalar or enum field is present in the source, it + * replaces the field in the target. + * + * If a singular message field is present in the source, it is merged + * with the target field by calling mergePartial() of the responsible + * message type. + * + * If a repeated field is present in the source, its values replace + * all values in the target array, removing extraneous values. + * Repeated message fields are copied, not merged. + * + * If a map field is present in the source, entries are added to the + * target map, replacing entries with the same key. Entries that only + * exist in the target remain. Entries with message values are copied, + * not merged. + * + * Note that this function differs from protobuf merge semantics, + * which appends repeated fields. + */ +function reflectionMergePartial(info, target, source) { + let fieldValue, // the field value we are working with + input = source, output; // where we want our field value to go + for (let field of info.fields) { + let name = field.localName; + if (field.oneof) { + const group = input[field.oneof]; // this is the oneof`s group in the source + if ((group === null || group === void 0 ? void 0 : group.oneofKind) == undefined) { // the user is free to omit + continue; // we skip this field, and all other members too + } + fieldValue = group[name]; // our value comes from the the oneof group of the source + output = target[field.oneof]; // and our output is the oneof group of the target + output.oneofKind = group.oneofKind; // always update discriminator + if (fieldValue == undefined) { + delete output[name]; // remove any existing value + continue; // skip further work on field + } + } + else { + fieldValue = input[name]; // we are using the source directly + output = target; // we want our field value to go directly into the target + if (fieldValue == undefined) { + continue; // skip further work on field, existing value is used as is + } + } + if (field.repeat) + output[name].length = fieldValue.length; // resize target array to match source array + // now we just work with `fieldValue` and `output` to merge the value + switch (field.kind) { + case "scalar": + case "enum": + if (field.repeat) + for (let i = 0; i < fieldValue.length; i++) + output[name][i] = fieldValue[i]; // not a reference type + else + output[name] = fieldValue; // not a reference type + break; + case "message": + let T = field.T(); + if (field.repeat) + for (let i = 0; i < fieldValue.length; i++) + output[name][i] = T.create(fieldValue[i]); + else if (output[name] === undefined) + output[name] = T.create(fieldValue); // nothing to merge with + else + T.mergePartial(output[name], fieldValue); + break; + case "map": + // Map and repeated fields are simply overwritten, not appended or merged + switch (field.V.kind) { + case "scalar": + case "enum": + Object.assign(output[name], fieldValue); // elements are not reference types + break; + case "message": + let T = field.V.T(); + for (let k of Object.keys(fieldValue)) + output[name][k] = T.create(fieldValue[k]); + break; + } + break; + } + } } +exports.reflectionMergePartial = reflectionMergePartial; -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern +/***/ }), - assertValidPattern(pattern) +/***/ 4863: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Thanks to Yeting Li for - // improving this regexp to avoid a ReDOS vulnerability. - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - // shortcut. no need to expand. - return [pattern] - } +"use strict"; - return expand(pattern) +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.reflectionScalarDefault = void 0; +const reflection_info_1 = __nccwpck_require__(1370); +const reflection_long_convert_1 = __nccwpck_require__(4612); +const pb_long_1 = __nccwpck_require__(7777); +/** + * Creates the default value for a scalar type. + */ +function reflectionScalarDefault(type, longType = reflection_info_1.LongType.STRING) { + switch (type) { + case reflection_info_1.ScalarType.BOOL: + return false; + case reflection_info_1.ScalarType.UINT64: + case reflection_info_1.ScalarType.FIXED64: + return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbULong.ZERO, longType); + case reflection_info_1.ScalarType.INT64: + case reflection_info_1.ScalarType.SFIXED64: + case reflection_info_1.ScalarType.SINT64: + return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbLong.ZERO, longType); + case reflection_info_1.ScalarType.DOUBLE: + case reflection_info_1.ScalarType.FLOAT: + return 0.0; + case reflection_info_1.ScalarType.BYTES: + return new Uint8Array(0); + case reflection_info_1.ScalarType.STRING: + return ""; + default: + // case ScalarType.INT32: + // case ScalarType.UINT32: + // case ScalarType.SINT32: + // case ScalarType.FIXED32: + // case ScalarType.SFIXED32: + return 0; + } } +exports.reflectionScalarDefault = reflectionScalarDefault; -var MAX_PATTERN_LENGTH = 1024 * 64 -var assertValidPattern = function (pattern) { - if (typeof pattern !== 'string') { - throw new TypeError('invalid pattern') - } - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError('pattern is too long') - } -} +/***/ }), -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - assertValidPattern(pattern) +/***/ 903: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - var options = this.options +"use strict"; - // shortcuts - if (pattern === '**') { - if (!options.noglobstar) - return GLOBSTAR - else - pattern = '*' - } - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ReflectionTypeCheck = void 0; +const reflection_info_1 = __nccwpck_require__(1370); +const oneof_1 = __nccwpck_require__(8531); +// noinspection JSMethodCanBeStatic +class ReflectionTypeCheck { + constructor(info) { + var _a; + this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : []; } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue + prepare() { + if (this.data) + return; + const req = [], known = [], oneofs = []; + for (let field of this.fields) { + if (field.oneof) { + if (!oneofs.includes(field.oneof)) { + oneofs.push(field.oneof); + req.push(field.oneof); + known.push(field.oneof); + } + } + else { + known.push(field.localName); + switch (field.kind) { + case "scalar": + case "enum": + if (!field.opt || field.repeat) + req.push(field.localName); + break; + case "message": + if (field.repeat) + req.push(field.localName); + break; + case "map": + req.push(field.localName); + break; + } + } + } + this.data = { req, known, oneofs: Object.values(oneofs) }; } - - switch (c) { - /* istanbul ignore next */ - case '/': { - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - } - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue + /** + * Is the argument a valid message as specified by the + * reflection information? + * + * Checks all field types recursively. The `depth` + * specifies how deep into the structure the check will be. + * + * With a depth of 0, only the presence of fields + * is checked. + * + * With a depth of 1 or more, the field types are checked. + * + * With a depth of 2 or more, the members of map, repeated + * and message fields are checked. + * + * Message fields will be checked recursively with depth - 1. + * + * The number of map entries / repeated values being checked + * is < depth. + */ + is(message, depth, allowExcessProperties = false) { + if (depth < 0) + return true; + if (message === null || message === undefined || typeof message != 'object') + return false; + this.prepare(); + let keys = Object.keys(message), data = this.data; + // if a required field is missing in arg, this cannot be a T + if (keys.length < data.req.length || data.req.some(n => !keys.includes(n))) + return false; + if (!allowExcessProperties) { + // if the arg contains a key we dont know, this is not a literal T + if (keys.some(k => !data.known.includes(k))) + return false; } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue + // "With a depth of 0, only the presence and absence of fields is checked." + // "With a depth of 1 or more, the field types are checked." + if (depth < 1) { + return true; } - - if (!stateChar) { - re += '\\(' - continue + // check oneof group + for (const name of data.oneofs) { + const group = message[name]; + if (!oneof_1.isOneofGroup(group)) + return false; + if (group.oneofKind === undefined) + continue; + const field = this.fields.find(f => f.localName === group.oneofKind); + if (!field) + return false; // we found no field, but have a kind, something is wrong + if (!this.field(group[group.oneofKind], field, allowExcessProperties, depth)) + return false; } - - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue + // check types + for (const field of this.fields) { + if (field.oneof !== undefined) + continue; + if (!this.field(message[field.localName], field, allowExcessProperties, depth)) + return false; } - - clearStateChar() - hasMagic = true - var pl = patternListStack.pop() - // negation is (?:(?!js)[^/]*) - // The others are (?:) - re += pl.close - if (pl.type === '!') { - negativeLists.push(pl) + return true; + } + field(arg, field, allowExcessProperties, depth) { + let repeated = field.repeat; + switch (field.kind) { + case "scalar": + if (arg === undefined) + return field.opt; + if (repeated) + return this.scalars(arg, field.T, depth, field.L); + return this.scalar(arg, field.T, field.L); + case "enum": + if (arg === undefined) + return field.opt; + if (repeated) + return this.scalars(arg, reflection_info_1.ScalarType.INT32, depth); + return this.scalar(arg, reflection_info_1.ScalarType.INT32); + case "message": + if (arg === undefined) + return true; + if (repeated) + return this.messages(arg, field.T(), allowExcessProperties, depth); + return this.message(arg, field.T(), allowExcessProperties, depth); + case "map": + if (typeof arg != 'object' || arg === null) + return false; + if (depth < 2) + return true; + if (!this.mapKeys(arg, field.K, depth)) + return false; + switch (field.V.kind) { + case "scalar": + return this.scalars(Object.values(arg), field.V.T, depth, field.V.L); + case "enum": + return this.scalars(Object.values(arg), reflection_info_1.ScalarType.INT32, depth); + case "message": + return this.messages(Object.values(arg), field.V.T(), allowExcessProperties, depth); + } + break; } - pl.reEnd = re.length - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue + return true; + } + message(arg, type, allowExcessProperties, depth) { + if (allowExcessProperties) { + return type.isAssignable(arg, depth); } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue + return type.is(arg, depth); + } + messages(arg, type, allowExcessProperties, depth) { + if (!Array.isArray(arg)) + return false; + if (depth < 2) + return true; + if (allowExcessProperties) { + for (let i = 0; i < arg.length && i < depth; i++) + if (!type.isAssignable(arg[i], depth - 1)) + return false; } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue + else { + for (let i = 0; i < arg.length && i < depth; i++) + if (!type.is(arg[i], depth - 1)) + return false; } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue + return true; + } + scalar(arg, type, longType) { + let argType = typeof arg; + switch (type) { + case reflection_info_1.ScalarType.UINT64: + case reflection_info_1.ScalarType.FIXED64: + case reflection_info_1.ScalarType.INT64: + case reflection_info_1.ScalarType.SFIXED64: + case reflection_info_1.ScalarType.SINT64: + switch (longType) { + case reflection_info_1.LongType.BIGINT: + return argType == "bigint"; + case reflection_info_1.LongType.NUMBER: + return argType == "number" && !isNaN(arg); + default: + return argType == "string"; + } + case reflection_info_1.ScalarType.BOOL: + return argType == 'boolean'; + case reflection_info_1.ScalarType.STRING: + return argType == 'string'; + case reflection_info_1.ScalarType.BYTES: + return arg instanceof Uint8Array; + case reflection_info_1.ScalarType.DOUBLE: + case reflection_info_1.ScalarType.FLOAT: + return argType == 'number' && !isNaN(arg); + default: + // case ScalarType.UINT32: + // case ScalarType.FIXED32: + // case ScalarType.INT32: + // case ScalarType.SINT32: + // case ScalarType.SFIXED32: + return argType == 'number' && Number.isInteger(arg); + } + } + scalars(arg, type, depth, longType) { + if (!Array.isArray(arg)) + return false; + if (depth < 2) + return true; + if (Array.isArray(arg)) + for (let i = 0; i < arg.length && i < depth; i++) + if (!this.scalar(arg[i], type, longType)) + return false; + return true; + } + mapKeys(map, type, depth) { + let keys = Object.keys(map); + switch (type) { + case reflection_info_1.ScalarType.INT32: + case reflection_info_1.ScalarType.FIXED32: + case reflection_info_1.ScalarType.SFIXED32: + case reflection_info_1.ScalarType.SINT32: + case reflection_info_1.ScalarType.UINT32: + return this.scalars(keys.slice(0, depth).map(k => parseInt(k)), type, depth); + case reflection_info_1.ScalarType.BOOL: + return this.scalars(keys.slice(0, depth).map(k => k == 'true' ? true : k == 'false' ? false : k), type, depth); + default: + return this.scalars(keys, type, depth, reflection_info_1.LongType.STRING); } + } +} +exports.ReflectionTypeCheck = ReflectionTypeCheck; - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - default: - // swallow any state char that wasn't consumed - clearStateChar() +/***/ }), - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } +/***/ 4812: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - re += c +module.exports = +{ + parallel : __nccwpck_require__(8210), + serial : __nccwpck_require__(445), + serialOrdered : __nccwpck_require__(3578) +}; - } // switch - } // for - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } +/***/ }), - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length) - this.debug('setting tail', re, pl) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } +/***/ 1700: +/***/ ((module) => { - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) +// API +module.exports = abort; - this.debug('tail=%j\n %s', tail, tail, pl, re) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type +/** + * Aborts leftover active jobs + * + * @param {object} state - current state object + */ +function abort(state) +{ + Object.keys(state.jobs).forEach(clean.bind(state)); - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } + // reset leftover jobs + state.jobs = {}; +} - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' +/** + * Cleans up leftover job by invoking abort function for the provided job id + * + * @this state + * @param {string|number} key - job id to abort + */ +function clean(key) +{ + if (typeof this.jobs[key] == 'function') + { + this.jobs[key](); } +} - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '[': case '.': case '(': addPatternStart = true - } - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] +/***/ }), - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) +/***/ 2794: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - nlLast += nlAfter +var defer = __nccwpck_require__(5295); - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter +// API +module.exports = async; - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } +/** + * Runs provided callback asynchronously + * even if callback itself is not + * + * @param {function} callback - callback to invoke + * @returns {function} - augmented callback + */ +function async(callback) +{ + var isAsync = false; - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } + // check if async happened + defer(function() { isAsync = true; }); - if (addPatternStart) { - re = patternStart + re - } + return function async_callback(err, result) + { + if (isAsync) + { + callback(err, result); + } + else + { + defer(function nextTick_callback() + { + callback(err, result); + }); + } + }; +} - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } +/***/ }), - var flags = options.nocase ? 'i' : '' - try { - var regExp = new RegExp('^' + re + '$', flags) - } catch (er) /* istanbul ignore next - should be impossible */ { - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - return new RegExp('$.') - } +/***/ 5295: +/***/ ((module) => { - regExp._glob = pattern - regExp._src = re +module.exports = defer; - return regExp -} +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } } -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set +/***/ }), - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options +/***/ 9023: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' +var async = __nccwpck_require__(2794) + , abort = __nccwpck_require__(1700) + ; - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') +// API +module.exports = iterate; - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' +/** + * Iterates over each job object + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {object} state - current job status + * @param {function} callback - invoked when all elements processed + */ +function iterate(list, iterator, state, callback) +{ + // store current index + var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - try { - this.regexp = new RegExp(re, flags) - } catch (ex) /* istanbul ignore next - should be impossible */ { - this.regexp = false - } - return this.regexp -} + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) + { + // don't repeat yourself + // skip secondary callbacks + if (!(key in state.jobs)) + { + return; + } -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} + // clean up jobs + delete state.jobs[key]; -Minimatch.prototype.match = function match (f, partial) { - if (typeof partial === 'undefined') partial = this.partial - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' + if (error) + { + // don't process rest of the results + // stop still active jobs + // and reset the list + abort(state); + } + else + { + state.results[key] = output; + } - if (f === '/' && partial) return true + // return salvaged results + callback(error, state.results); + }); +} - var options = this.options +/** + * Runs iterator over provided job element + * + * @param {function} iterator - iterator to invoke + * @param {string|number} key - key/index of the element in the list of jobs + * @param {mixed} item - job description + * @param {function} callback - invoked after iterator is done with the job + * @returns {function|mixed} - job abort function or something else + */ +function runJob(iterator, key, item, callback) +{ + var aborter; - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') + // allow shortcut if iterator expects only two arguments + if (iterator.length == 2) + { + aborter = iterator(item, async(callback)); + } + // otherwise go with full three arguments + else + { + aborter = iterator(item, key, async(callback)); } - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) + return aborter; +} - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - var set = this.set - this.debug(this.pattern, 'set', set) +/***/ }), - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } +/***/ 2474: +/***/ ((module) => { - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate +// API +module.exports = state; + +/** + * Creates initial state object + * for iteration over list + * + * @param {array|object} list - list to iterate over + * @param {function|null} sortMethod - function to use for keys sort, + * or `null` to keep them as is + * @returns {object} - initial state object + */ +function state(list, sortMethod) +{ + var isNamedList = !Array.isArray(list) + , initState = + { + index : 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs : {}, + results : isNamedList ? {} : [], + size : isNamedList ? Object.keys(list).length : list.length } + ; + + if (sortMethod) + { + // sort array keys based on it's values + // sort object's keys just on own merit + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) + { + return sortMethod(list[a], list[b]); + }); } - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate + return initState; } -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) +/***/ }), - this.debug('matchOne', file.length, pattern.length) +/***/ 7942: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] +var abort = __nccwpck_require__(1700) + , async = __nccwpck_require__(2794) + ; - this.debug(pattern, p, f) +// API +module.exports = terminator; - // should be impossible. - // some invalid regexp stuff in the set. - /* istanbul ignore if */ - if (p === false) return false +/** + * Terminates jobs in the attached state context + * + * @this AsyncKitState# + * @param {function} callback - final callback to invoke after termination + */ +function terminator(callback) +{ + if (!Object.keys(this.jobs).length) + { + return; + } - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) + // fast forward iteration index + this.index = this.size; - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } + // abort jobs + abort(this); - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] + // send back results we have so far + async(callback)(null, this.results); +} - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } +/***/ }), - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } +/***/ 8210: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - /* istanbul ignore if */ - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } +var iterate = __nccwpck_require__(9023) + , initState = __nccwpck_require__(2474) + , terminator = __nccwpck_require__(7942) + ; - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - hit = f === p - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } +// Public API +module.exports = parallel; - if (!hit) return false - } +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else /* istanbul ignore else */ if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - return (fi === fl - 1) && (file[fi] === '') + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); + + state.index++; } - // should be unreachable. - /* istanbul ignore next */ - throw new Error('wtf?') + return terminator.bind(state, callback); } -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +/***/ }), + +/***/ 445: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var serialOrdered = __nccwpck_require__(3578); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); } /***/ }), -/***/ 467: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ 3578: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var iterate = __nccwpck_require__(9023) + , initState = __nccwpck_require__(2474) + , terminator = __nccwpck_require__(7942) + ; +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; -Object.defineProperty(exports, "__esModule", ({ value: true })); +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } -var Stream = _interopDefault(__nccwpck_require__(2781)); -var http = _interopDefault(__nccwpck_require__(3685)); -var Url = _interopDefault(__nccwpck_require__(7310)); -var whatwgUrl = _interopDefault(__nccwpck_require__(8665)); -var https = _interopDefault(__nccwpck_require__(5687)); -var zlib = _interopDefault(__nccwpck_require__(9796)); + state.index++; -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; + // done here + callback(null, state.results); + }); -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); + return terminator.bind(state, callback); +} -class Blob { - constructor() { - this[TYPE] = ''; +/* + * -- Sort methods + */ - const blobParts = arguments[0]; - const options = arguments[1]; +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} - const buffers = []; - let size = 0; +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - this[BUFFER] = Buffer.concat(buffers); +/***/ }), - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; +/***/ 9417: +/***/ ((module) => { - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); +"use strict"; - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; } -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } - this.message = message; - this.type = type; + bi = str.indexOf(b, i + 1); + } - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } } - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); + return result; } -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = (__nccwpck_require__(2877).convert); -} catch (e) {} -const INTERNALS = Symbol('Body internals'); +/***/ }), -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; +/***/ 3717: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; +var concatMap = __nccwpck_require__(6891); +var balanced = __nccwpck_require__(9417); - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; +module.exports = expandTop; - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); } -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, + var parts = []; + var m = balanced('{', '}', str); - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; + if (!m) + return str.split(','); - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, + parts.push.apply(parts, p); - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; + return parts; +} - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; +function expandTop(str) { + if (!str) + return []; -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; + return expand(escapeBraces(str), true).map(unescapeBraces); +} -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; +function identity(e) { + return e; +} - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} - this[INTERNALS].disturbed = true; +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } +function expand(str, isTop) { + var expansions = []; - let body = this.body; + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } - // body is blob - if (isBlob(body)) { - body = body.stream(); - } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; + var N; - return new Body.Promise(function (resolve, reject) { - let resTimeout; + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } + N = []; - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } - accumBytes += chunk.length; - accum.push(chunk); - }); + return expansions; +} - body.on('end', function () { - if (abort) { - return; - } - clearTimeout(resTimeout); - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} +/***/ }), -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } +/***/ 5443: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; +var util = __nccwpck_require__(3837); +var Stream = (__nccwpck_require__(2781).Stream); +var DelayedStream = __nccwpck_require__(8611); - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } +module.exports = CombinedStream; +function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; +} +util.inherits(CombinedStream, Stream); - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); + this.emit('resume'); +}; - this[MAP] = Object.create(null); +CombinedStream.prototype.end = function() { + this._reset(); + this.emit('end'); +}; - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); +CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit('close'); +}; - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } +CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; +}; - return; - } +CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; + } - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; + this._emitError(new Error(message)); +}; - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } +CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } + var self = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; + } - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } + self.dataSize += stream.dataSize; + }); - return this[MAP][key].join(', '); - } + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; + } +}; - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; +CombinedStream.prototype._emitError = function(err) { + this._reset(); + this.emit('error', err); +}; - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } +/***/ }), - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } +/***/ 6891: +/***/ ((module) => { - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } +/***/ }), - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } +/***/ 8611: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } +var Stream = (__nccwpck_require__(2781).Stream); +var util = __nccwpck_require__(3837); - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } +module.exports = DelayedStream; +function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; + + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; } -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; +util.inherits(DelayedStream, Stream); -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); +DelayedStream.create = function(source, options) { + var delayedStream = new this(); -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } + + delayedStream.source = source; + + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + + source.on('error', function() {}); + if (delayedStream.pauseStream) { + source.pause(); + } + + return delayedStream; +}; + +Object.defineProperty(DelayedStream.prototype, 'readable', { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } }); -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; +DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); +}; - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} +DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } -const INTERNAL = Symbol('internal'); + this.source.resume(); +}; -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} +DelayedStream.prototype.pause = function() { + this.source.pause(); +}; -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } +DelayedStream.prototype.release = function() { + this._released = true; - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; +}; - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } +DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; +}; - this[INTERNAL].index = index + 1; +DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + if (args[0] === 'data') { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); + this._bufferedEvents.push(args); +}; -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); +DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } + if (this.dataSize <= this.maxDataSize) { + return; + } - return obj; + this._maxDataSizeExceeded = true; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' + this.emit('error', new Error(message)); +}; + + +/***/ }), + +/***/ 4365: +/***/ ((module) => { + +"use strict"; + + +function _process (v, mod) { + var i + var r + + if (typeof mod === 'function') { + r = mod(v) + if (r !== undefined) { + v = r + } + } else if (Array.isArray(mod)) { + for (i = 0; i < mod.length; i++) { + r = mod[i](v) + if (r !== undefined) { + v = r + } + } + } + + return v } -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; +function parseKey (key, val) { + // detect negative index notation + if (key[0] === '-' && Array.isArray(val) && /^-\d+$/.test(key)) { + return val.length + parseInt(key, 10) + } + return key } -const INTERNALS$1 = Symbol('Response internals'); +function isIndex (k) { + return /^\d+$/.test(k) +} -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; +function isObject (val) { + return Object.prototype.toString.call(val) === '[object Object]' +} -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; +function isArrayOrObject (val) { + return Object(val) === val +} - Body.call(this, body, opts); +function isEmptyObject (val) { + return Object.keys(val).length === 0 +} - const status = opts.status || 200; - const headers = new Headers(opts.headers); +var blacklist = ['__proto__', 'prototype', 'constructor'] +var blacklistFilter = function (part) { return blacklist.indexOf(part) === -1 } - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } +function parsePath (path, sep) { + if (path.indexOf('[') >= 0) { + path = path.replace(/\[/g, sep).replace(/]/g, '') + } - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } + var parts = path.split(sep) - get url() { - return this[INTERNALS$1].url || ''; - } + var check = parts.filter(blacklistFilter) - get status() { - return this[INTERNALS$1].status; - } + if (check.length !== parts.length) { + throw Error('Refusing to update blacklisted property ' + path) + } - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } + return parts +} - get redirected() { - return this[INTERNALS$1].counter > 0; - } +var hasOwnProperty = Object.prototype.hasOwnProperty - get statusText() { - return this[INTERNALS$1].statusText; - } +function DotObject (separator, override, useArray, useBrackets) { + if (!(this instanceof DotObject)) { + return new DotObject(separator, override, useArray, useBrackets) + } - get headers() { - return this[INTERNALS$1].headers; - } + if (typeof override === 'undefined') override = false + if (typeof useArray === 'undefined') useArray = true + if (typeof useBrackets === 'undefined') useBrackets = true + this.separator = separator || '.' + this.override = override + this.useArray = useArray + this.useBrackets = useBrackets + this.keepArray = false - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } + // contains touched arrays + this.cleanup = [] } -Body.mixIn(Response.prototype); +var dotDefault = new DotObject('.', false, true, true) +function wrap (method) { + return function () { + return dotDefault[method].apply(dotDefault, arguments) + } +} -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); +DotObject.prototype._fill = function (a, obj, v, mod) { + var k = a.shift() -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); + if (a.length > 0) { + obj[k] = obj[k] || (this.useArray && isIndex(a[0]) ? [] : {}) -const INTERNALS$2 = Symbol('Request internals'); -const URL = Url.URL || whatwgUrl.URL; + if (!isArrayOrObject(obj[k])) { + if (this.override) { + obj[k] = {} + } else { + if (!(isArrayOrObject(v) && isEmptyObject(v))) { + throw new Error( + 'Trying to redefine `' + k + '` which is a ' + typeof obj[k] + ) + } -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; + return + } + } + + this._fill(a, obj[k], v, mod) + } else { + if (!this.override && isArrayOrObject(obj[k]) && !isEmptyObject(obj[k])) { + if (!(isArrayOrObject(v) && isEmptyObject(v))) { + throw new Error("Trying to redefine non-empty obj['" + k + "']") + } + + return + } + + obj[k] = _process(v, mod) + } +} /** - * Wrapper around `new URL` to handle arbitrary URLs * - * @param {string} urlStr - * @return {void} - */ -function parseURL(urlStr) { - /* - Check whether the URL is absolute or not - Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 - Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + * Converts an object with dotted-key/value pairs to it's expanded version + * + * Optionally transformed by a set of modifiers. + * + * Usage: + * + * var row = { + * 'nr': 200, + * 'doc.name': ' My Document ' + * } + * + * var mods = { + * 'doc.name': [_s.trim, _s.underscored] + * } + * + * dot.object(row, mods) + * + * @param {Object} obj + * @param {Object} mods */ - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL(urlStr).toString(); - } +DotObject.prototype.object = function (obj, mods) { + var self = this - // Fallback to old implementation for arbitrary URLs - return parse_url(urlStr); -} + Object.keys(obj).forEach(function (k) { + var mod = mods === undefined ? null : mods[k] + // normalize array notation. + var ok = parsePath(k, self.separator).join(self.separator) -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + if (ok.indexOf(self.separator) !== -1) { + self._fill(ok.split(self.separator), obj, obj[k], mod) + delete obj[k] + } else { + obj[k] = _process(obj[k], mod) + } + }) + + return obj +} /** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean + * @param {String} path dotted path + * @param {String} v value to be set + * @param {Object} obj object to be modified + * @param {Function|Array} mod optional modifier */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} +DotObject.prototype.str = function (path, v, obj, mod) { + var ok = parsePath(path, this.separator).join(this.separator) -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); + if (path.indexOf(this.separator) !== -1) { + this._fill(ok.split(this.separator), obj, v, mod) + } else { + obj[path] = _process(v, mod) + } + + return obj } /** - * Request class * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void + * Pick a value from an object using dot notation. + * + * Optionally remove the value + * + * @param {String} path + * @param {Object} obj + * @param {Boolean} remove */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parseURL(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } +DotObject.prototype.pick = function (path, obj, remove, reindexArray) { + var i + var keys + var val + var key + var cp + + keys = parsePath(path, this.separator) + for (i = 0; i < keys.length; i++) { + key = parseKey(keys[i], obj) + if (obj && typeof obj === 'object' && key in obj) { + if (i === keys.length - 1) { + if (remove) { + val = obj[key] + if (reindexArray && Array.isArray(obj)) { + obj.splice(key, 1) + } else { + delete obj[key] + } + if (Array.isArray(obj)) { + cp = keys.slice(0, -1).join('.') + if (this.cleanup.indexOf(cp) === -1) { + this.cleanup.push(cp) + } + } + return val + } else { + return obj[key] + } + } else { + obj = obj[key] + } + } else { + return undefined + } + } + if (remove && Array.isArray(obj)) { + obj = obj.filter(function (n) { + return n !== undefined + }) + } + return obj +} +/** + * + * Delete value from an object using dot notation. + * + * @param {String} path + * @param {Object} obj + * @return {any} The removed value + */ +DotObject.prototype.delete = function (path, obj) { + return this.remove(path, obj, true) +} - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); +/** + * + * Remove value from an object using dot notation. + * + * Will remove multiple items if path is an array. + * In this case array indexes will be retained until all + * removals have been processed. + * + * Use dot.delete() to automatically re-index arrays. + * + * @param {String|Array} path + * @param {Object} obj + * @param {Boolean} reindexArray + * @return {any} The removed value + */ +DotObject.prototype.remove = function (path, obj, reindexArray) { + var i - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } + this.cleanup = [] + if (Array.isArray(path)) { + for (i = 0; i < path.length; i++) { + this.pick(path[i], obj, true, reindexArray) + } + if (!reindexArray) { + this._cleanup(obj) + } + return obj + } else { + return this.pick(path, obj, true, reindexArray) + } +} - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; +DotObject.prototype._cleanup = function (obj) { + var ret + var i + var keys + var root + if (this.cleanup.length) { + for (i = 0; i < this.cleanup.length; i++) { + keys = this.cleanup[i].split('.') + root = keys.splice(0, -1).join('.') + ret = root ? this.pick(root, obj) : obj + ret = ret[keys[0]].filter(function (v) { + return v !== undefined + }) + this.set(this.cleanup[i], ret, obj) + } + this.cleanup = [] + } +} - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); +/** + * Alias method for `dot.remove` + * + * Note: this is not an alias for dot.delete() + * + * @param {String|Array} path + * @param {Object} obj + * @param {Boolean} reindexArray + * @return {any} The removed value + */ +DotObject.prototype.del = DotObject.prototype.remove - const headers = new Headers(init.headers || input.headers || {}); +/** + * + * Move a property from one place to the other. + * + * If the source path does not exist (undefined) + * the target property will not be set. + * + * @param {String} source + * @param {String} target + * @param {Object} obj + * @param {Function|Array} mods + * @param {Boolean} merge + */ +DotObject.prototype.move = function (source, target, obj, mods, merge) { + if (typeof mods === 'function' || Array.isArray(mods)) { + this.set(target, _process(this.pick(source, obj, true), mods), obj, merge) + } else { + merge = mods + this.set(target, this.pick(source, obj, true), obj, merge) + } - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } + return obj +} - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; +/** + * + * Transfer a property from one object to another object. + * + * If the source path does not exist (undefined) + * the property on the other object will not be set. + * + * @param {String} source + * @param {String} target + * @param {Object} obj1 + * @param {Object} obj2 + * @param {Function|Array} mods + * @param {Boolean} merge + */ +DotObject.prototype.transfer = function ( + source, + target, + obj1, + obj2, + mods, + merge +) { + if (typeof mods === 'function' || Array.isArray(mods)) { + this.set( + target, + _process(this.pick(source, obj1, true), mods), + obj2, + merge + ) + } else { + merge = mods + this.set(target, this.pick(source, obj1, true), obj2, merge) + } - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } + return obj2 +} - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; +/** + * + * Copy a property from one object to another object. + * + * If the source path does not exist (undefined) + * the property on the other object will not be set. + * + * @param {String} source + * @param {String} target + * @param {Object} obj1 + * @param {Object} obj2 + * @param {Function|Array} mods + * @param {Boolean} merge + */ +DotObject.prototype.copy = function (source, target, obj1, obj2, mods, merge) { + if (typeof mods === 'function' || Array.isArray(mods)) { + this.set( + target, + _process( + // clone what is picked + JSON.parse(JSON.stringify(this.pick(source, obj1, false))), + mods + ), + obj2, + merge + ) + } else { + merge = mods + this.set(target, this.pick(source, obj1, false), obj2, merge) + } - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } + return obj2 +} - get method() { - return this[INTERNALS$2].method; - } +/** + * + * Set a property on an object using dot notation. + * + * @param {String} path + * @param {any} val + * @param {Object} obj + * @param {Boolean} merge + */ +DotObject.prototype.set = function (path, val, obj, merge) { + var i + var k + var keys + var key + + // Do not operate if the value is undefined. + if (typeof val === 'undefined') { + return obj + } + keys = parsePath(path, this.separator) + + for (i = 0; i < keys.length; i++) { + key = keys[i] + if (i === keys.length - 1) { + if (merge && isObject(val) && isObject(obj[key])) { + for (k in val) { + if (hasOwnProperty.call(val, k)) { + obj[key][k] = val[k] + } + } + } else if (merge && Array.isArray(obj[key]) && Array.isArray(val)) { + for (var j = 0; j < val.length; j++) { + obj[keys[i]].push(val[j]) + } + } else { + obj[key] = val + } + } else if ( + // force the value to be an object + !hasOwnProperty.call(obj, key) || + (!isObject(obj[key]) && !Array.isArray(obj[key])) + ) { + // initialize as array if next key is numeric + if (/^\d+$/.test(keys[i + 1])) { + obj[key] = [] + } else { + obj[key] = {} + } + } + obj = obj[key] + } + return obj +} - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } +/** + * + * Transform an object + * + * Usage: + * + * var obj = { + * "id": 1, + * "some": { + * "thing": "else" + * } + * } + * + * var transform = { + * "id": "nr", + * "some.thing": "name" + * } + * + * var tgt = dot.transform(transform, obj) + * + * @param {Object} recipe Transform recipe + * @param {Object} obj Object to be transformed + * @param {Array} mods modifiers for the target + */ +DotObject.prototype.transform = function (recipe, obj, tgt) { + obj = obj || {} + tgt = tgt || {} + Object.keys(recipe).forEach( + function (key) { + this.set(recipe[key], this.pick(key, obj), tgt) + }.bind(this) + ) + return tgt +} - get headers() { - return this[INTERNALS$2].headers; - } +/** + * + * Convert object to dotted-key/value pair + * + * Usage: + * + * var tgt = dot.dot(obj) + * + * or + * + * var tgt = {} + * dot.dot(obj, tgt) + * + * @param {Object} obj source object + * @param {Object} tgt target object + * @param {Array} path path array (internal) + */ +DotObject.prototype.dot = function (obj, tgt, path) { + tgt = tgt || {} + path = path || [] + var isArray = Array.isArray(obj) + + Object.keys(obj).forEach( + function (key) { + var index = isArray && this.useBrackets ? '[' + key + ']' : key + if ( + isArrayOrObject(obj[key]) && + ((isObject(obj[key]) && !isEmptyObject(obj[key])) || + (Array.isArray(obj[key]) && !this.keepArray && obj[key].length !== 0)) + ) { + if (isArray && this.useBrackets) { + var previousKey = path[path.length - 1] || '' + return this.dot( + obj[key], + tgt, + path.slice(0, -1).concat(previousKey + index) + ) + } else { + return this.dot(obj[key], tgt, path.concat(index)) + } + } else { + if (isArray && this.useBrackets) { + tgt[path.join(this.separator).concat('[' + key + ']')] = obj[key] + } else { + tgt[path.concat(index).join(this.separator)] = obj[key] + } + } + }.bind(this) + ) + return tgt +} + +DotObject.pick = wrap('pick') +DotObject.move = wrap('move') +DotObject.transfer = wrap('transfer') +DotObject.transform = wrap('transform') +DotObject.copy = wrap('copy') +DotObject.object = wrap('object') +DotObject.str = wrap('str') +DotObject.set = wrap('set') +DotObject.delete = wrap('delete') +DotObject.del = DotObject.remove = wrap('remove') +DotObject.dot = wrap('dot'); +['override', 'overwrite'].forEach(function (prop) { + Object.defineProperty(DotObject, prop, { + get: function () { + return dotDefault.override + }, + set: function (val) { + dotDefault.override = !!val + } + }) +}); +['useArray', 'keepArray', 'useBrackets'].forEach(function (prop) { + Object.defineProperty(DotObject, prop, { + get: function () { + return dotDefault[prop] + }, + set: function (val) { + dotDefault[prop] = val + } + }) +}) - get redirect() { - return this[INTERNALS$2].redirect; - } +DotObject._process = _process - get signal() { - return this[INTERNALS$2].signal; - } +module.exports = DotObject - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} -Body.mixIn(Request.prototype); +/***/ }), -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); +/***/ 7426: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ /** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request + * Module exports. */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } +module.exports = __nccwpck_require__(3765) - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } +/***/ }), - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } +/***/ 3583: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } +"use strict"; +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } +/** + * Module dependencies. + * @private + */ - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js +var db = __nccwpck_require__(7426) +var extname = (__nccwpck_require__(1017).extname) - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i /** - * abort-error.js - * - * AbortError interface for cancelled requests + * Module exports. + * @public */ +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + /** - * Create AbortError instance + * Get the default charset for a MIME type. * - * @param String message Error message for human - * @return AbortError + * @param {string} type + * @return {boolean|string} */ -function AbortError(message) { - Error.call(this, message); - this.type = 'aborted'; - this.message = message; +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false } -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ -const URL$1 = Url.URL || whatwgUrl.URL; +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str -const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { - const orig = new URL$1(original).hostname; - const dest = new URL$1(destination).hostname; + if (!mime) { + return false + } - return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); -}; + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} /** - * isSameProtocol reports whether the two provided URLs use the same protocol. + * Get the default extension for a MIME type. * - * Both domains must already be in canonical form. - * @param {string|URL} original - * @param {string|URL} destination + * @param {string} type + * @return {boolean|string} */ -const isSameProtocol = function isSameProtocol(destination, original) { - const orig = new URL$1(original).protocol; - const dest = new URL$1(destination).protocol; - return orig === dest; -}; +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} /** - * Fetch function + * Lookup the MIME type for a file path/extension. * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise + * @param {string} path + * @return {boolean|string} */ -function fetch(url, opts) { - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } - Body.Promise = fetch.Promise; + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); + if (!extension) { + return false + } - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; + return exports.types[extension] || false +} - let response = null; +/** + * Populate the extensions and types maps. + * @private + */ - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - destroyStream(request.body, error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] - if (signal && signal.aborted) { - abort(); - return; - } + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; + if (!exts || !exts.length) { + return + } - // send request - const req = send(options); - let reqTimeout; + // mime -> extensions + extensions[type] = exts - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } - if (response && response.body) { - destroyStream(response.body, err); - } + // set the extension -> mime + types[extension] = type + } + }) +} - finalize(); - }); - fixResponseChunkedTransferBadEnding(req, function (err) { - if (signal && signal.aborted) { - return; - } +/***/ }), - if (response && response.body) { - destroyStream(response.body, err); - } - }); +/***/ 3973: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /* c8 ignore next 18 */ - if (parseInt(process.version.substring(1)) < 14) { - // Before Node.js 14, pipeline() does not fully support async iterators and does not always - // properly handle when the socket close/end events are out of order. - req.on('socket', function (s) { - s.addListener('close', function (hadError) { - // if a data listener is still present we didn't end cleanly - const hasDataListener = s.listenerCount('data') > 0; +module.exports = minimatch +minimatch.Minimatch = Minimatch - // if end happened before close but the socket didn't emit an error, do it now - if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { - const err = new Error('Premature close'); - err.code = 'ERR_STREAM_PREMATURE_CLOSE'; - response.body.emit('error', err); - } - }); - }); - } +var path = (function () { try { return __nccwpck_require__(1017) } catch (e) {}}()) || { + sep: '/' +} +minimatch.sep = path.sep - req.on('response', function (res) { - clearTimeout(reqTimeout); +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = __nccwpck_require__(3717) - const headers = createHeadersLenient(res.headers); +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' - // HTTP fetch step 5.3 - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1(location, request.url).toString(); - } catch (err) { - // error here can only be invalid URL in Location: header - // do not throw when options.redirect == manual - // let the user extract the errorneous redirect URL - if (request.redirect !== 'manual') { - reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); - finalize(); - return; - } - } +// * => any number of characters +var star = qmark + '*?' - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') - if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } +// normalizes slashes. +var slashSplit = /\/+/ - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } +function ext (a, b) { + b = b || {} + var t = {} + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + return t +} - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); +minimatch.defaults = function (def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; + var orig = minimatch - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); + var m = function minimatch (p, pattern, options) { + return orig(p, pattern, ext(def, options)) + } - // HTTP-network fetch step 12.1.1.4: handle content codings + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + m.Minimatch.defaults = function defaults (options) { + return orig.defaults(ext(def, options)).Minimatch + } - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } + m.filter = function filter (pattern, options) { + return orig.filter(pattern, ext(def, options)) + } - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; + m.defaults = function defaults (options) { + return orig.defaults(ext(def, options)) + } - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } + m.makeRe = function makeRe (pattern, options) { + return orig.makeRe(pattern, ext(def, options)) + } - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - raw.on('end', function () { - // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted. - if (!response) { - response = new Response(body, response_options); - resolve(response); - } - }); - return; - } + m.braceExpand = function braceExpand (pattern, options) { + return orig.braceExpand(pattern, ext(def, options)) + } - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } + m.match = function (list, pattern, options) { + return orig.match(list, pattern, ext(def, options)) + } - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); + return m +} - writeToStream(req, request); - }); +Minimatch.defaults = function (def) { + return minimatch.defaults(def).Minimatch } -function fixResponseChunkedTransferBadEnding(request, errorCallback) { - let socket; - request.on('socket', function (s) { - socket = s; - }); +function minimatch (p, pattern, options) { + assertValidPattern(pattern) - request.on('response', function (response) { - const headers = response.headers; + if (!options) options = {} - if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) { - response.once('close', function (hadError) { - // tests for socket presence, as in some situations the - // the 'socket' event is not triggered for the request - // (happens in deno), avoids `TypeError` - // if a data listener is still present we didn't end cleanly - const hasDataListener = socket && socket.listenerCount('data') > 0; + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } - if (hasDataListener && !hadError) { - const err = new Error('Premature close'); - err.code = 'ERR_STREAM_PREMATURE_CLOSE'; - errorCallback(err); - } - }); - } - }); + return new Minimatch(pattern, options).match(p) } -function destroyStream(stream, err) { - if (stream.destroy) { - stream.destroy(err); - } else { - // node < 8 - stream.emit('error', err); - stream.end(); - } -} +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; + assertValidPattern(pattern) -// expose Promise -fetch.Promise = global.Promise; + if (!options) options = {} -module.exports = exports = fetch; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports["default"] = exports; -exports.Headers = Headers; -exports.Request = Request; -exports.Response = Response; -exports.FetchError = FetchError; -exports.AbortError = AbortError; + pattern = pattern.trim() + // windows support: need to use /, not \ + if (!options.allowWindowsEscape && path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } -/***/ }), + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + this.partial = !!options.partial -/***/ 2043: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // make the set of regexps etc. + this.make() +} -;(function (sax) { // wrapper for non-node envs - sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } - sax.SAXParser = SAXParser - sax.SAXStream = SAXStream - sax.createStream = createStream +Minimatch.prototype.debug = function () {} - // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. - // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), - // since that's the earliest that a buffer overrun could occur. This way, checks are - // as rare as required, but as often as necessary to ensure never crossing this bound. - // Furthermore, buffers are only tested at most once per write(), so passing a very - // large string into write() might have undesirable effects, but this is manageable by - // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme - // edge case, result in creating at most one complete copy of the string passed in. - // Set to Infinity to have unlimited buffers. - sax.MAX_BUFFER_LENGTH = 64 * 1024 +Minimatch.prototype.make = make +function make () { + var pattern = this.pattern + var options = this.options - var buffers = [ - 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', - 'procInstName', 'procInstBody', 'entity', 'attribName', - 'attribValue', 'cdata', 'script' - ] + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } - sax.EVENTS = [ - 'text', - 'processinginstruction', - 'sgmldeclaration', - 'doctype', - 'comment', - 'opentagstart', - 'attribute', - 'opentag', - 'closetag', - 'opencdata', - 'cdata', - 'closecdata', - 'error', - 'end', - 'ready', - 'script', - 'opennamespace', - 'closenamespace' - ] + // step 1: figure out negation, etc. + this.parseNegate() - function SAXParser (strict, opt) { - if (!(this instanceof SAXParser)) { - return new SAXParser(strict, opt) - } + // step 2: expand braces + var set = this.globSet = this.braceExpand() - var parser = this - clearBuffers(parser) - parser.q = parser.c = '' - parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH - parser.opt = opt || {} - parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags - parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' - parser.tags = [] - parser.closed = parser.closedRoot = parser.sawRoot = false - parser.tag = parser.error = null - parser.strict = !!strict - parser.noscript = !!(strict || parser.opt.noscript) - parser.state = S.BEGIN - parser.strictEntities = parser.opt.strictEntities - parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) - parser.attribList = [] + if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } - // namespaces form a prototype chain. - // it always points at the current tag, - // which protos to its parent tag. - if (parser.opt.xmlns) { - parser.ns = Object.create(rootNS) - } + this.debug(this.pattern, set) - // mostly just for error reporting - parser.trackPosition = parser.opt.position !== false - if (parser.trackPosition) { - parser.position = parser.line = parser.column = 0 - } - emit(parser, 'onready') - } + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) - if (!Object.create) { - Object.create = function (o) { - function F () {} - F.prototype = o - var newf = new F() - return newf - } - } + this.debug(this.pattern, set) - if (!Object.keys) { - Object.keys = function (o) { - var a = [] - for (var i in o) if (o.hasOwnProperty(i)) a.push(i) - return a - } - } + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) - function checkBufferLength (parser) { - var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) - var maxActual = 0 - for (var i = 0, l = buffers.length; i < l; i++) { - var len = parser[buffers[i]].length - if (len > maxAllowed) { - // Text/cdata nodes can get big, and since they're buffered, - // we can get here under normal conditions. - // Avoid issues by emitting the text node now, - // so at least it won't get any bigger. - switch (buffers[i]) { - case 'textNode': - closeText(parser) - break + this.debug(this.pattern, set) - case 'cdata': - emitNode(parser, 'oncdata', parser.cdata) - parser.cdata = '' - break + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) - case 'script': - emitNode(parser, 'onscript', parser.script) - parser.script = '' - break + this.debug(this.pattern, set) - default: - error(parser, 'Max buffer length exceeded: ' + buffers[i]) - } - } - maxActual = Math.max(maxActual, len) - } - // schedule the next check for the earliest possible buffer overrun. - var m = sax.MAX_BUFFER_LENGTH - maxActual - parser.bufferCheckPosition = m + parser.position + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ } - function clearBuffers (parser) { - for (var i = 0, l = buffers.length; i < l; i++) { - parser[buffers[i]] = '' + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} } } - function flushBuffers (parser) { - closeText(parser) - if (parser.cdata !== '') { - emitNode(parser, 'oncdata', parser.cdata) - parser.cdata = '' - } - if (parser.script !== '') { - emitNode(parser, 'onscript', parser.script) - parser.script = '' - } + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + assertValidPattern(pattern) + + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] } - SAXParser.prototype = { - end: function () { end(this) }, - write: write, - resume: function () { this.error = null; return this }, - close: function () { return this.write(null) }, - flush: function () { flushBuffers(this) } + return expand(pattern) +} + +var MAX_PATTERN_LENGTH = 1024 * 64 +var assertValidPattern = function (pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') } - var Stream - try { - Stream = (__nccwpck_require__(2781).Stream) - } catch (ex) { - Stream = function () {} + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') } - if (!Stream) Stream = function () {} +} - var streamWraps = sax.EVENTS.filter(function (ev) { - return ev !== 'error' && ev !== 'end' - }) +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + assertValidPattern(pattern) - function createStream (strict, opt) { - return new SAXStream(strict, opt) + var options = this.options + + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*' } + if (pattern === '') return '' - function SAXStream (strict, opt) { - if (!(this instanceof SAXStream)) { - return new SAXStream(strict, opt) + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false } + } - Stream.apply(this) + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) - this._parser = new SAXParser(strict, opt) - this.writable = true - this.readable = true + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } - var me = this + switch (c) { + /* istanbul ignore next */ + case '/': { + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + } - this._parser.onend = function () { - me.emit('end') - } + case '\\': + clearStateChar() + escaping = true + continue - this._parser.onerror = function (er) { - me.emit('error', er) + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - // if didn't throw, then means error was handled. - // go ahead and clear error, so we can write again. - me._parser.error = null - } + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } - this._decoder = null + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue - streamWraps.forEach(function (ev) { - Object.defineProperty(me, 'on' + ev, { - get: function () { - return me._parser['on' + ev] - }, - set: function (h) { - if (!h) { - me.removeAllListeners(ev) - me._parser['on' + ev] = h - return h - } - me.on(ev, h) - }, - enumerable: true, - configurable: false - }) - }) - } + case '(': + if (inClass) { + re += '(' + continue + } - SAXStream.prototype = Object.create(Stream.prototype, { - constructor: { - value: SAXStream - } - }) + if (!stateChar) { + re += '\\(' + continue + } - SAXStream.prototype.write = function (data) { - if (typeof Buffer === 'function' && - typeof Buffer.isBuffer === 'function' && - Buffer.isBuffer(data)) { - if (!this._decoder) { - var SD = (__nccwpck_require__(1576).StringDecoder) - this._decoder = new SD('utf8') - } - data = this._decoder.write(data) - } + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue - this._parser.write(data.toString()) - this.emit('data', data) - return true - } + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } - SAXStream.prototype.end = function (chunk) { - if (chunk && chunk.length) { - this.write(chunk) - } - this._parser.end() - return true - } + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue - SAXStream.prototype.on = function (ev, handler) { - var me = this - if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { - me._parser['on' + ev] = function () { - var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) - args.splice(0, 0, ev) - me.emit.apply(me, args) - } - } + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } - return Stream.prototype.on.call(me, ev, handler) - } + clearStateChar() + re += '|' + continue - // this really needs to be replaced with character classes. - // XML allows all manner of ridiculous numbers and digits. - var CDATA = '[CDATA[' - var DOCTYPE = 'DOCTYPE' - var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' - var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' - var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() - // http://www.w3.org/TR/REC-xml/#NT-NameStartChar - // This implementation works on strings, a single character at a time - // as such, it cannot ever support astral-plane characters (10000-EFFFF) - // without a significant breaking change to either this parser, or the - // JavaScript language. Implementation of an emoji-capable xml parser - // is left as an exercise for the reader. - var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + if (inClass) { + re += '\\' + c + continue + } - var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + inClass = true + classStart = i + reClassStart = re.length + re += c + continue - var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ - var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } - function isWhitespace (c) { - return c === ' ' || c === '\n' || c === '\r' || c === '\t' - } + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } - function isQuote (c) { - return c === '"' || c === '\'' + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] } - function isAttribEnd (c) { - return c === '>' || isWhitespace(c) + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail } - function isMatch (regex, c) { - return regex.test(c) + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' } - function notMatch (regex, c) { - return !isMatch(regex, c) + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '[': case '.': case '(': addPatternStart = true } - var S = 0 - sax.STATE = { - BEGIN: S++, // leading byte order mark or whitespace - BEGIN_WHITESPACE: S++, // leading whitespace - TEXT: S++, // general stuff - TEXT_ENTITY: S++, // & and such. - OPEN_WAKA: S++, // < - SGML_DECL: S++, // - SCRIPT: S++, //